home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-11-24 | 190.7 KB | 5,149 lines |
- Copyright (C) 1989, 1996, 1997 Aladdin Enterprises. All rights reserved.
-
- This file is part of Aladdin Ghostscript.
-
- Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author
- or distributor accepts any responsibility for the consequences of using it,
- or for whether it serves any particular purpose or works at all, unless he
- or she says so in writing. Refer to the Aladdin Ghostscript Free Public
- License (the "License") for full details.
-
- Every copy of Aladdin Ghostscript must include a copy of the License,
- normally in a plain ASCII text file named PUBLIC. The License grants you
- the right to copy, modify and redistribute Aladdin Ghostscript, but only
- under certain conditions described in the License. Among other things, the
- License requires that the copyright notice and this notice be preserved on
- all copies.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- This file, NEWS, describes the changes in the most recent releases of
- Ghostscript. Changes in older releases are described in history*.txt.
-
- For an overview of Ghostscript and a list of the documentation files, see
- README.
-
- Within each release, news appears in the following order: Documentation,
- Procedures, Utilities, Drivers, Platforms, Fonts, Interpreter, Streams
- (included under Interpreter through release 2.9.9), Library. Changes marked
- with a * were made available as patches to a previous release.
-
- Version 5.10 (11/23/97)
- =======================
-
- This release, not originally planned, greatly reduces the size of PDF files
- produced by the pdfwrite device, fixes a number of minor problems in PDF
- output, and optionally produces output compatible with Acrobat 2.x, in order
- to address problems reported by NSF in processing these files as part of
- their FastLane electronic proposal submission process. Aside from that, and
- some localized bug fixes, it has minimal changes from 5.03.
-
- Known problems:
- - ps2pdf sometimes produces output with links in an incorrect
- format (k/index.*) or missing or inactive links (k/rahtz/foo.ps).
- - Setting HWSize by itself with setpagedevice has no effect.
- - When shrinking oversize halftone cells, the current algorithm,
- which progressively halves the size, can produce non-monotonic behavior; GS
- should either use a monotonic algorithm or give a limitcheck.
- (k/jdscreen.ps)
- - In Type 1 fonts, almost-vertical lines that straddle a stem edge
- produce uneven output.
- - flushfile with a procedure-target stream doesn't pass the buffered
- data to the procedure.
- - At some resolutions, gaps occur in some character outlines with
- certain Type 1 fonts. (? - no test file)
- - The Watcom MS Windows makefile (watcw32.mak) doesn't work.
- - The uniprint driver sometimes drops some output, and is very slow
- at 720x720 resolution.
- - pdf2ps can't handle embedded TrueType and CFF fonts: it produces
- invalid output. (k/tjava8.pdf, p. 192)
- - pdf2ps can't handle Patterns. (k/nissl.pdf)
- - pdf2ps can't handle embedded fonts with CharProcs (characters
- defined by PDF objects). (k/be/iguide_unix.pdf)
- - pdf2ps has other, undefined problems. (k/gfreeman/ps2.*,
- qsshort.*, wallp3.*)
- - [e]pswrite core-dumps on certain files if GC is enabled. Work
- around this by including -dNOGC on the command line. (k/spong.pdf)
- - [e]pswrite can't handle Patterns. (k/gfreeman/overpart.ps)
- - [e]pswrite may produce incorrect line widths for stroked graphics.
- (k/gfreeman/walpart2.ps)
- - Halftones look relatively coarse: we should be using a small-scale
- version of AccurateScreens (multiple small dot cells with an ordered dither
- cell visiting pattern) to get both fine screens and many levels.
- - Since the x11alpha device uses saturation to emulate alpha,
- writing anti-aliased objects over dark areas produces incorrect output.
- (gdevxalt.c)
- - Setting OutputFile=- should redirect stdout to stderr (or provide
- some other way to redirect stdout).
- - Type 0 (Japanese / Chinese / ...) fonts are not supported in PDF
- files. (k/microw-j.pdf)
- - Ghostscript can't load TrueType fonts where the amount of data
- either before or after the glyf section exceeds 64K. (k/baueti__.ttf)
- - Ghostscript can't load TrueType fonts where the total data is more
- than 64K and the offset or length of the glyfs is odd.
- - High-level output devices ([e]pswrite, pdfwrite, pxl*) always
- produce a single output file rather than a separate file for each page, even
- if there is a %d in the OutputFile name.
- - ps2pdf doesn't handle the Distiller 3.0 named objects and BP/EP/SP
- pdfmarks. (k/pdfmark3.ps)
-
- Documentation
- -------------
-
- Fixes bugs:
- - ansihead.mak referred to unix-ansi.mak, which is actually named
- unixansi.mak. (ansihead.mak)
- - README referred to an "If you need help" section that was moved to
- new-user.txt. (README)
-
- Updates build information for HP-UX systems. (make.txt)
-
- Updates the information for getting Martin Lottermoser's hpdj driver.
- (new-user.txt)
-
- Improves the error message when a user tries to invoke gswin32c without
- explicitly selecting a device. (dwmainc.cpp)
-
- Removes the author's name and e-mail address from the pdf2ps man page, at
- his request. (pdf2ps.1)
-
- Improves the documentation for BandBufferSpace. (language.txt)
-
- Procedures
- ----------
-
- Changes the VMS command files so that they don't echo the commands.
- (append_l.com, copy_one.com, rm_all.com, rm_one.com)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The "lp" command files all inappropriately set the top margin to
- 0.1". (lp386.bat, lp386r2.bat, lpgs, lpgs.bat, lpr2, lpr2.bat)
- - The lp386[r2].bat command files inappropriately set the
- LanguageLevel to 1. (lp386.bat, lp386r2.bat)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PDF writer got confused about the current color if the input
- contained text strings separated only by color changes. (gdevpdf.c)
- - Some casts between const char * and const byte * were incorrect
- (warnings only). (gdevpdft.c)
-
- Adds a NoCancel parameter to the winpr2 device, which suppresses display of
- the dialog box. (gdevwpr2.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - An "extern" was omitted, causing a duplicate definition of
- build_function_procs. (ifunc.h)
- - The global pseudo-operator table was too small, causing a
- limitcheck in ps2ascii. (iinit.c)
- - setcolorspace with a Pattern space with no underlying space would
- cause an error if the current color space was a Pattern space. (zpcolor.c)
- - The Decode key was optional, not required, in the dictionary form
- of image[mask]. (zimage2.c)
-
- Adds two more PCL/PJL reset sequences to the list of sequences to ignore.
- (gs_init.ps)
-
- Library
- -------
-
- Fixes bugs:
- - Multi-screen color halftones could produce "seams". (gxcht.c)
- - A bug in the gcc optimizer on H-P RISC workstations caused all
- curves to be output as lines. (gxpflat.c)
- - If a non-standard OtherSubr was called before the [h]sbw in a Type
- 1 font, a crash could occur. (gxhint3.c)
- - gxclist.c didn't include string_.h. (gxclist.c)
-
- Version 5.07(limited) (10/31/97)
- ================================
-
- A few more bug fixes for the 5.10 release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Some file and directory names hadn't been updated to match the new
- directory structure on the primary server. (make.txt, new-user.txt)
-
- Adds the URL for reaching URW++. (Fontmap.*)
-
- Drivers
- -------
-
- Fixes bugs:
- - Because the C % operator isn't equivalent to 'modulus' for
- negative numerators, gx_default_strip_tile_rectangle could crash in some
- cases. (gxdevice.h, gdevdflt.c)
- - In the PDF writer, Dest values were correct (page numbers) for
- GoToR actions, but were incorrect (should be page object references) for
- other actions; also, Rect values were transformed, but should not be.
- (gdevpdfm.c)
- - In the PDF writer, articles and bookmarks could attempt to write
- multiple Contents streams, which is not allowed. (gdevpdfx.h, gdevpdf.c,
- gdevpdfm.c)
- - The PDF writer ignored PS (PostScript pass-through) pdfmarks.
- (gdevpdfm.c)
- - The PDF writer didn't write out the color space parameters for
- CIE-based spaces. (gdevpdfi.c)
-
- Library
- -------
-
- Fixes bugs:
- - Suffix subclass structures with 4 added pointers skipped the first
- pointer in the superclass when garbage collecting, possibly causing invalid
- memory accesses. (gsstruct.h)
- - An argument list incompatibility in a procedure used in a static
- structure initialization upset some compilers. (gsfunc.h, gsfunc0.c)
-
- Version 5.06(limited) (10/7/97)
- ===============================
-
- This fixes a few more bugs in the PDF writer, and a few other very obscure
- problems. It also adds support for Functions and brings multiple contexts
- closer to working, neither of which we expect actually to be used any time
- soon. This is intended to be the candidate fileset for the 5.10 release,
- but since we had to tinker with a delicate part of the PDF writer to fix a
- problem affecting visual quality with Acrobat, there may be new bugs that
- will have to be fixed in yet another candidate fileset.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Jim McPherson's e-mail address was out of date. (devices.txt)
- - Invoking ps2pdf with only a single file name is supported on some
- versions of Windows NT and OS/2, not only on Unix. (ps2pdf.txt)
- - The ps2pdf documentation didn't indicate that ps2pdf can use the
- Windows "console mode" executable as well as the MS-DOS executable.
- (ps2pdf.txt)
- - The list of which Distiller parameters actually have an effect was
- incorrect. (gdevpdfp.c)
-
- Notes that the cdj550 driver is compatible with the H-P 660C and 660Cse.
- (devs.mak, devices.txt)
-
- Adds a note about using Acrobat Reader fonts. (install.txt, use.txt)
-
- Notes that the LJ 5P, like the 5L, is not a PCL XL printer. (devs.mak)
-
- Notes problems and possible problems with certain versions of the Borland
- C++ compiler. (make.txt)
-
- Notes the change in -Z:. (use.txt)
-
- Updates the uniprint documentation for this release. (devices.txt)
-
- Expands the rationale for the large resolution in the bbox device.
- (gdevbbox.c)
-
- Notes that the H-P DeskJet 600 series can use the djet500 driver with -r600.
- (devs.mak)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Vector devices didn't include a necessary dependency on the stream
- package. (lib.mak)
- - There were several bugs in the ps2pdf.bat file. (ps2pdf.bat)
-
- Changes -Z: so it prints some summary lines as well as minimal information
- about banding. This makes the -ZA trace compatible with our memory leak
- tool. (iminst.h, imain.c)
-
- Utilities
- ---------
-
- Fixes bugs:
- - ps2epsi sometimes produced a too-large bounding box, or even
- caused a rangecheck. (ps2epsi)
-
- At the advice of a user, removes the RESOLUTION=100 line from pv.sh.
- (pv.sh)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PDF writer produced incorrect output for stroke operations
- with unusual CTMs, because PDF, unlike PostScript, applies the CTM to the
- path at the time of the fill or stroke, not as the path is being
- constructed. (gdevpdfd.c)
- - Vector devices returned an error, instead of falling back to the
- default implementations, when filling or stroking with a pattern.
- (gdevvec.c)
- - The PDF writer freed an internal stream structure using the wrong
- allocator, possibly causing memory corruption. (gdevpdf.c)
- - The uniprint driver had some compilation problems, and possibly
- other problems as well (consult the source file). (gdevupd.c, *.upp)
- - With -dNOCACHE, the PDF writer wrote all text in the base 14 fonts
- twice, once as text and once as outlines. (gs_pdfwr.ps, gdevpdfd.c)
- - The PDF writer didn't properly recognize Symbol and ZapfDingbats
- as being among the base 14 fonts. (gs_pdfwr.ps)
- - When using Acrobat Reader with font smoothing turned on, the base
- 14 fonts appeared too bold on the screen in files produced by ps2pdf,
- because Reader decides that a 100-unit font at 1 unit = 0.1 point should be
- bolder than a 10-unit font at 1 unit = 1 point. (gdevpdfx.h, gdevpdf.c,
- gdevpdft.c)
- - The PDF writer didn't convert View/Page specifications for
- bookmark pdfmarks to a Dest key, causing bookmarks not to work.
- (gdevpdfm.c)
-
- Speeds up the PDF writer by only passing the encoding if it isn't
- StandardEncoding. (gs_pdfwr.ps, gdevpdft.c)
-
- Changes the PDF writer's handling of unencoded glyphs. Adds device
- parameters ReEncodeCharacters and ReAssignCharacters to control how
- unencoded glyphs are handled. (These parameters will go away when we handle
- variant encodings in full generality.) (gdevpdfx.h, gdevpdf.c, gdevpdfp.c,
- gdevpdft.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - setpagedevice didn't restore the stack properly if it failed.
- (gs_setpd.ps)
- - 0 identmatrix didn't cause an error. (gs_init.ps)
- - Devices expecting array-valued parameters didn't accept packed
- arrays. (iparam.c)
-
- Starts to de-implement support for special handling of the stacks on
- machines with 16:16 addressing. Currently this only happens if DPNEXT is
- defined. (istack.h)
-
- Brings multiple contexts closer to working. The interpreter can now run
- some very simple test cases. (int.mak, icontext.h, igstate.h, interp.h,
- istruct.h, icontext.c, interp.c, zcontext.c, zgstate.c)
-
- Adds support for FunctionType 0 Functions, which are used in PDF 1.2.
- (ifunc.h, iref.h, store.h, zfunc.c, zfunc0.c)
-
- Updates a few remaining pseudo-operators in gs_init.ps to take advantage of
- automatic operand and dictionary stack restoration: eexec, identmatrix,
- pathbbox. Not updated yet: filter. (gs_init.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Separation color spaces weren't supported. (gs_pdf.ps,
- pdf_draw.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The size argument to gs_free was wrong in an out-of-memory case.
- (This was irrelevant, since gs_free only uses the size argument for
- error-checking during debugging.) (gdevprn.c)
- - When freeing a block on the C heap, if -Z@ was set, the block's
- header wasn't filled with the sentinel pattern. (Only relevant when
- debugging.) (gsmemory.c)
- - The C heap allocator didn't fix up pointers properly when freeing
- a block, causing unpredictable memory corruption after a 'resize' call.
- (gsmemory.c)
- - Using a show operator inside the procedure of a cshow with a
- composite font could cause an invalid access. (gschar.c)
-
- Adds support for FunctionType 0 Functions. (gsdsrc.h, gsfunc.h, gsfunc0.h,
- gxfunc.h, gsdsrc.c, gsfunc.c, gsfunc0.c)
-
- Moves the GC descriptor for arrays of constant strings to a place where it
- is more visible. (gscie.h, gsstruct.h, gscie.c, gsmemory.c)
-
- Version 5.05(limited) (9/24/97)
- ===============================
-
- This fixes a few bugs found in the first few days of testing 5.04. There
- will probably be several more small incremental filesets before the next
- public release.
-
- Platforms
- ---------
-
- Fixes bugs:
- - The Windows code wouldn't compile with the latest MSVC++, because
- Microsoft changed the prototype for fprintf. (gp_msio.c)
-
- Drivers
- -------
-
- Fixes bugs:
- - A picky compiler complained about some omitted casts. (gdevpdf.c,
- gdevpdft.c)
- - Writing a PDF file with any synthesized fonts could produce
- slightly garbled output or possibly even an invalid memory access, because a
- string was not terminated. (gdevpdft.c)
- - When writing a PDF file, the first character of a string could get
- placed off the page, because of a matrix bookkeeping error. (gdevpdft.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - In case of an error, setpagedevice executed a 'stop'
- unconditionally, rather than just signalling an error through the error
- machinery. (gs_setpd.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Files with unknown operators caused errors, even if the BX
- operator was used to disable the error report. (pdf_base.ps)
-
- Version 5.04(limited) (9/21/97)
- ===============================
-
- This is the first test fileset for the 5.10 release: see above.
-
- Documentation
- -------------
-
- Fixes bugs:
- - George Cameron's address was listed with a domain of .ukis rather
- than .uk. (devices.txt)
- - The default value of ORIENT1 was given as false rather than true.
- (use.txt)
- - The documentation for ps2pdf said one can omit the output file
- name, but this is only true on Unix systems. (ps2pdf.txt)
- - The documentation for ps2pdf didn't make clear that the executable
- must be named gs on Microsoft OSs. (ps2pdf.txt)
- - ht_cache is actually allocated with the first gstate, not on
- demand. (gsstate.c)
-
- Slightly improves the documentation of .type1execchar. (zchar1.c)
-
- Clarifies the distinction between Ghostscript (PostScript) commands and
- shell commands, for the benefit of users brainwashed by Microsoft.
- (use.txt)
-
- Improves the usage synopsis in the ps2epsi man page. (ps2epsi.1)
-
- Adds a reference to Uli Wortmann's H-P drivers. (new-user.txt)
-
- Improves the documentation of GS_FONTPATH, distinguishing it from GS_LIB and
- the search path. (use.txt)
-
- Notes that on some systems, one must substitute 'installbsd' for 'install'
- in the makefile and make other edits. (install.txt, ansihead.mak,
- cc-head.mak, gcc-head.mak)
-
- Notes that ps2epsi is no longer maintained. (ps2epsi.ps)
-
- Clarifies the availability of support. (new-user.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The uniprint driver was accidentally omitted from the default
- Watcom (MS-DOS) and OS/2 configurations. (watc.mak, os2.mak)
- - The suggested compiler switches for Digital Unix were incorrect.
- (make.txt)
- - The cp.cmd script file didn't work in the newest versions of OS/2.
- (cp.cmd)
- - The compilation rules for some Windows-specific files didn't
- include ccf32.tr in their dependencies, which could cause the compilation to
- fail. (winint.mak)
-
- Removes the lev2min configuration, since we no longer support 16-bit Windows
- environments. (int.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - ps2epsi.bat always appended to the output file, rather than
- writing over it. (There are probably other bugs in this script file.)
- (ps2epsi.bat)
- - The output of pdf2ps didn't execute properly on some printers,
- especially Level 1 printers. (gs_pdf.ps)
-
- Makes ps2pdf do an initial 'save', which causes fonts to be retained better
- across pages. (ps2pdf, ps2pdf.bat)
-
- Adds an option to pcharstr.ps to produce C-like rather than PostScript-like
- output. (pcharstr.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - The LaserJet III and higher printers weren't able to print in the
- narrow strip between 1/6" and 1/4" from the left edge of the page.
- (gdevdjet.c)
- - The PCL XL drivers produced incorrect output which often caused a
- PCL XL NoCurrentFont error at the beginning of the second page. (gdevpx.c)
- - The GC descriptors for the pswrite device and for PS/PDF devices
- were incorrect, causing the GC to smash memory. (gdevpsdf.h, gdevps.c)
- - The pdfwrite device didn't have a GC descriptor at all. ******
- DISABLED because the device allocates all its temporary structures directly
- on the C heap. ****** (gdevpdf.c)
- - When the PDF writer wrote out the Dest key in an action
- dictionary, it always used a page object instead of a page number, even if
- the page was in another file or didn't exist; it now always uses a page
- number. (gdevpdfm.c)
- - The PDF writer gave an error if a file redefined any of the 14
- known fonts. (gs_pdfwr.ps)
- - The PDF writer didn't handle copy_mono with a non-zero sourcex.
- (This probably had no effect in practice.) (gdevpdfi.c)
-
- Splits off gdevpdfd.c (driver drawing procedures) from gdevpdf.c, since the
- file was getting too large. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c)
-
- Adds recognition of the CompressPages, CompatibilityLevel, and
- UseFlateCompression device (distiller) parameters to the PDF writer. If
- CompressPages is true (default), CompatibilityLevel is 1.2 (default), and
- UseFlateCompression is true (default), page contents will be compressed with
- Flate ("zip") compression; otherwise, they will not be compressed.
-
- Restructures the PDF writer to produce much smaller and faster PDF files, by
- restructuring its handling of text to defer all resources to the end of the
- file, eliminate duplicate Font resources, turn characters into Type 3 fonts
- rather than Image XObjects, use more efficient text positioning commands,
- and optionally (but by default) Flate-compress the contents streams. Also
- removes some unnecessary spaces in the output. (gdevpdfx.h, gdevpdf.c,
- gdevpdfd.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
-
- Improves the PDF writer so that it no longer converts stroke operations with
- non-uniform CTMs to fills, and doesn't bother to stroke empty paths at all.
- (gdevpdfd.c)
-
- Speeds up the "alternate" X devices substantially. (gdevxalt.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Filling a string with a Pattern caused a crash with the PDF
- writer. (gs_pdfwr.ps)
- - Converting a file with no marks at all to PDF produced invalid
- output. (gdevpdf.c)
- - .endpage, which is called at the end of every page, sometimes left
- 2 extra values on the stack. (gs_setpd.ps)
- - A definefont with a Type 1 font lacking a .notdef character didn't
- cause an invalidfont error. (bfont.h, zfont1.c, zfont2.c)
- - On anti-aliased devices, characters from Type 1 fonts with an
- incorrect or missing FontBBox came out a factor of 2 or 4 too small if the
- character was small enough to cache. (zchar1.c)
- - If a file redefined certain operators, loading Type 1 fonts could
- fail. This problem was fixed in an earlier release, and somehow the fix got
- undone. (gs_type1.ps)
- - cshow didn't set the correct current font when running the
- procedure, and didn't restore it properly afterwards. (zchar.c, zchar2.c)
- - With certain compilers, the interpreter loop caused unaligned
- memory accesses on DEC Alpha systems running Windows NT. (iref.h)
-
- Adds freelist validation to the memory checker. (ilocate.c)
-
- Changes the debugging switch for bypassing the garbage collector from
- compile-time to run-time. (igc.c)
-
- Adds the real operators for view clipping (but they don't do anything yet,
- because view clipping isn't implemented at the library level). (zdps.c,
- zvmem.c)
-
- Completes the implementation of defineusername. (zdps.c)
-
- Adds an implementation of wtranslation, by simply reading a device parameter
- of the same name. (gs_dps.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Lab color spaces weren't implemented, and gave an error.
- (gs_pdf.ps)
- - Images only worked with built-in color spaces, not color space
- resources. (pdf_draw.ps)
- - Embedded font subsets were treated as undefined. (pdf_font.ps)
-
- Library
- -------
-
- Fixes bugs:
- - strokepath sometimes clipped the path to the current clipping
- region, which it should never do. (gxstroke.c)
- - The initial X/Y position for Type 2 charstrings (CFFs) sometimes
- was set incorrectly. (gstype2.c)
- - Memory management for dash patterns was still incorrect (despite
- the fix in 4.36), possibly causing snarled freelists and invalid memory
- references. (gsline.c, gsstate.c)
- - The saved gstate of a Pattern instance was freed properly when the
- instance was freed by reference counting as a result of setting the color or
- color space, but not when the instance was freed by reference counting
- anywhere else. (gspcolor.c)
- - A test for whether to use a slower form of oversampling was
- incorrect. (Probably only a performance bug.) (gschar.c)
- - cshow didn't set the correct current font when running the
- procedure, and didn't restore it properly afterwards. (gsfont.h, gschar.c,
- gsfont.c)
-
- Improves allocator validity checking when DEBUG is set. (gsalloc.c)
-
- Adds a couple of missing FontType values. (gxftype.h)
-
- Changes the default conversions between CMYK and RGB colors back to the
- Adobe rules documented in the Red Book, to reduce output differences from
- Adobe implementations. (gxdcconv.c)
-
- Adds a graphics state element for view clipping, under an #ifdef DPNEXT, and
- implementations of the view clipping operators (but not the logic for doing
- the actual clipping). (gsstate.h, gzstate.h, gsstate.c)
-
- Removes the redundant clip_rule variable from the graphics state (which
- wasn't used for anything). (gzstate.h, gspath.c)
-
- Version 5.03 (8/8/97)
- =====================
-
- The only reason for this release is to fix two serious bugs introduced
- between 5.01 and 5.02. We fixed a few other very localized and low-risk
- bugs at the same time.
-
- Documentation
- -------------
-
- Removes the "(if relevant)" from the bug reporting form, since about 25% of
- the forms are submitted without a URL or any other data. (bug-form.txt)
-
- Adds a discussion of single-use procedures to the style guide.
- (c-style.txt)
-
- Updates the information about obtaining Ghostscript on physical media.
- (new-user.txt)
-
- Updates the information about ps_view. (new-user.txt)
-
- Procedures
- ----------
-
- Adds the uniprint driver to all platforms. (*.mak)
-
- Changes the contents of the pc.tar.gz archives:
- - Adds *.upp.
- - Removes *.res.
- - Removes cp.bat, font2c.bat, mv.bat, rm.bat, wmakebat.bat,
- cp.cmd, mv.cmd and rm.cmd, and gv-vms.hlp.
-
- Removes an obsolete script file. (tar_mv)
-
- Drivers
- -------
-
- Fixes bugs:
- - The uniprint driver didn't handle an increase in media height
- correctly. (gdevupd.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - Printing to printers other than LPT1 under MS Windows no longer
- worked. (bug introduced in 5.02) (gp_mswin.c)
- - Drag-and-drop didn't work under Windows NT (or other 32-bit
- Windows environments). (dwtext.cpp)
- - Sequent systems needed an additional system header file.
- (time_.h)
-
- Fonts
- -----
-
- Fixes bugs:
- - The substitutions Myriad => Times and Minion => Helvetica were
- incorrect; they should be the other way around. (gs_fonts.ps)
- - MyriadPkg wasn't recognized as a condensed font. (gs_fonts.ps)
- - Univers wasn't recognized as mapping to Helvetica. (gs_fonts.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - A line of debugging code, printing the sections of 3 regions of
- TrueType fonts being loaded, was accidentally left in. (gs_ttf.ps)
- - TrueType fonts whose pre-glyf data had odd length were broken
- (typically gave a rangecheck error), because of the fix to treat the odd
- byte of individual sfnts strings as padding per Adobe documentation. (bug
- introduced in 5.02) (gs_ttf.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - If a real-number token in a CFF had an even number of nibbles, a
- unmatchedmark error would occur. (gs_cff.ps)
- - If the strings Index in a CFF included an empty string, a
- rangecheck error would occur. (gs_cff.ps)
- - CFFs with non-standard Encodings that included standard strings
- would get a typecheck error. (gs_cff.ps)
-
- Library
- -------
-
- Fixes bugs:
- - Using %d in an OutputFile name didn't substitute the page number.
- (bug introduced in 5.02) (gsdevice.c)
- - In Type 2 CharStrings, if a hintmask occurred at the beginning, it
- wasn't recognized as also incorporating the function of vstemhm.
- (gstype2.c)
- - The data bytes for hintmask and cntrmask weren't printed for
- debugging. (gstype2.c)
-
- Version 5.02 (7/28/97)
- ======================
-
- Because of an ISP failure that delayed the 5.0 announcement for 12 days, the
- 5.01 release only responded to a few days of bug reports; 5.02 fixes some
- problems that should have been fixed in 5.01, as well as a large number of
- obscure problems uncovered by Genoa testing.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The documentation for building on the Intergraph Clipper was out
- of date. (make.txt)
- - ESC was claimed to be a self-delimiting character. (gs_init.ps)
- - Removes the documentation claiming that ^D and ^Z are
- self-delimiting. (language.txt)
- - Document that -dSUBSTFONT doesn't create a font with the requested
- font name. (use.txt)
- - Ghostscript was defined as compatible with PDF 1.1 rather than PDF
- 1.2. (language.txt)
- - The description of gcc problems on Alpha didn't make it clear that
- the use of gcc was optional, not required. (make.txt)
- - The description of how to use GNU make on VMS systems was
- inaccurate. (make.txt)
-
- Improves the documentation for building on H-P RISC systems. (make.txt)
-
- Corrects the discussion of Cygnus' licensing terms for the cygwin32
- environment. (make.txt)
-
- Removes the apology for the poor quality of Ghostscript's TrueType
- rasterizer, since the quality is now quite good. (fonts.txt)
-
- Documents the fact that one must use # rather than = with Watcom C.
- (use.txt)
-
- Documents the updates and additions to the uniprint driver. (devices.txt)
-
- Adds some material to Aladdin's C style guide. (c-style.txt)
-
- Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
- 7.1 (perhaps 7.0) or later on VAXen. (make.txt)
-
- Adds an example EPS file. (psfiles.txt)
-
- Adds some information about compiling and linking under OS/2. (make.txt)
-
- Expands the description of XLIBDIR and XLIBDIRS. (*head.mak)
-
- Adds a new pointer to information on using a Kanji font with Ghostscript.
- (new-user.txt)
-
- Documents the use of /Resource/<category>/<resource> as the default place
- where resources are sought. (use.txt)
-
- Updates the documentation on building with MSVC++ to reflect the makefile
- changes. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - In openvms.mak, several ifdef tests were wrong. (openvms.mak)
- - One CP command was slightly inconsistent with the others.
- (zlib.mak)
- - If libz and libpng were both shared, libz was linked first,
- resulting in some undefined references. (libpng.mak)
- - The VMS makefile didn't interact properly with VMS's version
- numbering facility. (copy_one.com)
-
- Updates the VMS DCL script one last time, to handle libpng version 96.
- (vms.mak)
-
- Restructures the MSVC++ makefiles to allow building the graphics library
- without the PostScript interpreter. (bcwin32.mak, msvc4.mak[deleted],
- msvc5.mak[deleted], msvc32.mak, msvccom.mak, watcw32.mak,
- wincom.mak[deleted], winint.mak, winlib.mak)
-
- Adds a makefile to create a library-only demo program under MSVC++, like the
- ones for Unix/gcc and MS-DOS/Watcom. (msvclib.mak)
-
- Adds an example EPS file. (ridt91.eps, unix-end.mak)
-
- Removes support for libpng release 0.88, which is now quite obsolete.
- (libpng.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - ps2pdf.bat, unlike ps2pdf, didn't accept options. (ps2pdf.bat)
- - echogs used 'const' in one place, which wasn't accepted by some
- very old compilers. (echogs.c)
- - pdf2ps output Orientation, which it shouldn't. (pdf_main.ps)
-
- Makes the usage message from ps2pdf.bat include the options, like ps2pdf.
- (ps2pdf.bat)
-
- Changes the printpath utility so that its output is legal PostScript code.
- (ppath.ps)
-
- Makes pdf2dsc add DSC comments for the bounding box (if a CropBox is
- available in the PDF file) and the orientation. (pdf2dsc.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - The get_bits operation wasn't implemented for the vgalib driver.
- (gdevvglb.c)
- - The dnj650c driver output an extra % near the end of the file.
- (gdevcdj.c)
- - The definition of pprintd2 didn't have a line break before the
- procedure name, confusing ansi2knr. (gdevpstr.c)
- - EPS files produced invalid PDF output. (gdevpdf.c)
- - "Vector" output devices didn't recognize %d in output file names,
- or - for output to stdout. (gdevprn.h, gxdevice.h, gdevprn.c, gdevvec.c,
- gsdevice.c)
- - With the pdfwrite driver, restore or grestore would cause a
- rangecheck error in .installpagedevice if a setpagedevice had been executed.
- (gdevpdfp.c)
- - The pdfwrite driver produced garbage output for text rotated by
- angles that were only infinitesimally different from multiples of 90
- degrees. (gdevpdft.c)
- - The pnm[raw] driver didn't handle anti-aliasing properly.
- (gdevpbm.c)
- - The PDF writer didn't scale the parameters for [a][width]show
- correctly. (gs_pdfwr.ps, gdevpdft.c)
-
- Fixes some minor compilation warnings not affecting code functionality.
- (gdevbbox.c, gdevpdfm.c, gshtscr.c, gsmemory.c, gxccman.c, gxfill.c,
- gximage0.c)
-
- Fixes some bugs in the uniprint driver and adds some more printer models.
- (gdevupd.c, bjc610a*.upp, bjc610b*.upp, necp2x6.upp, stc1520h.upp)
-
- Makes a small change for clean compilation on BeOS. (gdevcdj.c)
-
- Updates the PNG driver to use updated API calls for allocating/initializing
- and freeing the PNG structures. (gdevpng.c)
-
- Platforms
- ---------
-
- Refactors the MS Windows code to allow building the library without the
- interpreter. (gs_msio.c, gs_mslib.c, gp_mswin.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - definefont was executed twice on TrueType fonts. (No bad
- consequences, just unnecessary work.) (gs_ttf.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The fix for the 'stopped' around run_string_* in 5.01 was made
- incorrectly. (gs_init.ps)
- - Many operators that expect a matrix operand didn't accept packed
- arrays. (iutil.c)
- - The default CRD didn't have an explicit BlackPoint, which some
- Genoa tests require. (gs_lev2.ps)
- - A stack protection fix caused setscreen and setcolorscreen with
- dictionary operands to give a typecheck. (gs_dps2.ps)
- - Executing a string didn't handle tail recursion properly if the
- last token was followed by a single whitespace character. (interp.c)
- - Clearing the error indication didn't set errorname to null.
- (gs_init.ps)
- - Some unexpected items appeared on the execution stack, confusing
- some of the Genoa tests. (gs_init.ps, istack.h, istack.c, zcontrol.c)
- - The dummy definitions for setucacheparams/ucachestatus didn't look
- enough like the real ones. (gs_dps2.ps)
- - Insideness tests didn't work, because the hit detection device
- width and height weren't set up. (zupath.c)
- - defineuserobject didn't use the same algorithm for growing the
- array as Adobe interpreters. (gs_dps2.ps)
- - eq and ne didn't work correctly on save objects. (iutil.c)
- - findfont used =string internally, interfering with PostScript
- programs that also used it. (gs_fonts.ps)
- - cshow didn't set up scaled versions of base fonts as the current
- font. (zchar2.c)
- - defineresource didn't make the resource value read-only.
- (gs_res.ps)
- - If inustroke got an error, it could return without an error
- indication and without changing the stack. (zupath.c)
- - The arrays returned by different invocations of currentcolorspace
- with the same device color space weren't guaranteed to be eq. (gs_lev2.ps)
- - Out-of-range integers followed by a '.' were converted to names
- rather than reals. (iscan.c, iscannum.c)
- - resourceforall caused an invalidaccess error if currentglobal was
- true but the procedure, template, or scratch string was in local VM.
- (gs_res.ps)
- - In many places, integer values were converted to floats rather
- than doubles, losing precision. (ichar.h, icharout.h, ifont.h, iutil.h,
- idparam.c, iparam.c, iutil.c, zchar.c, zchar1.c, zchar42.c, zcharout.c,
- zcie.c, zcolor.c, zcolor1.c, zcolor2.c, zcontrol.c, zcsindex.c, zcssepr.c,
- zdpnext.c, zdps1.c, zfont.c, zfont2.c, zgstate.c, zhsb.c, zht.c, zmath.c,
- zmatrix.c, zmedia2.c, zpath.c, zpath1.c, zupath.c)
- - The TransformPQR procedure in the default CRD didn't pop its
- auxiliary operands from the stack. (gs_lev2.ps)
- - Because of an incorrect stack depth check, setcolorrendering
- sometimes produced a stackunderflow. (zcrd.c)
- - sethalftone caused an invalidaccess error if the HalfTone type was
- not 5, the dictionary was in local VM, and the current VM was global.
- (gs_dps2.ps)
- - writeobject and printobject caused an invalidaccess error if the
- object being written was in local VM and the current VM was global.
- (gs_btokn.ps)
- - ustrokepath appended the strokepath segments to the current path,
- rather than replacing the path. (zupath.c)
- - restore incorrectly purged from the character cache any characters
- in a font being freed, even if the font had a UID. (zfont.c)
- - The definition of zimage_opaque_setup confused ansi2knr.
- (zimage.c)
- - Type 42 fonts that included the padding byte in each sfnts string
- didn't work if sfnts had more than one string. (zfont42.c)
- - Doing a garbage collection at the same time as handling a
- stackoverflow failed to update the object that needed re-execution, causing
- the interpreter to execute random data. (interp.c)
- - %stdout and %stderr weren't flushed if they were closed
- explicitly. (ziodev.c)
-
- For greater Adobe compatibility:
- - Changes setdash to limit dash patterns to 11 elements. (This is
- enforced at the PostScript level: the graphics library doesn't have a
- limit.) (gs_init.ps)
- - Changes ^D and ^Z so they are not self-delimiting characters, and
- changes ^K so it is not a whitespace character. (gs_init.ps, iscan.c,
- scantab.c)
- - Makes = cause an error on non-read-accessible objects rather than
- printing them as --nostringval--. (gs_init.ps)
- - When -dSUBSTFONT= is used, makes findfont return the actual named
- font, rather than a copy with the FontName changed to the requested one.
- (gs_fonts.ps)
- - CFF fonts with a non-default FontMatrix caused an error.
- (gs_cff.ps)
-
- Fixes some minor compilation warnings not affecting code functionality.
- (iparam.c, zfcmap.c)
-
- Strengthens the test of o-stack validity in the main interpreter loop in
- debug mode. (interp.c)
-
- Changes the filling rule for Type 1 fonts from winding-number to even-odd.
- This affects no properly designed fonts, and seems to match Adobe
- interpreters better. (zchar1.c)
-
- Implements non-standard Encodings in CFF fonts. (gs_cff.ps)
-
- Changes the default halftone screen for 600 dpi printers from 85 to 106 lpi,
- which reduces the number of halftone levels from 50 to 32 but produces
- visually better output. (gs_init.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Pattern color spaces weren't supported. (gs_pdf.ps, pdf_draw.ps)
-
- Causes references to undefined named Destinations to be ignored rather than
- giving an error. (pdf_main.ps)
-
- Library
- -------
-
- Fixes bugs:
- - A 'const' was omitted in a declaration, upsetting several
- compilers. (gxclread.c)
- - arct and arcto gave an error for negative radii. (gspath1.c)
- - The collinearity check for arct[o] could cause some arcs to be
- rendered as single points. (gspath1.c)
- - Uncolored patterns sometimes came out blank, because the color
- wasn't set before calling the PaintProc. (gspcolor.c)
- - The phase for masking colored patterns was wrong, producing
- incorrect output. (gspcolor.c)
- - reversepath always appended the current position to the new path,
- rather than only doing so if the path just consisted of a single moveto.
- (gxpath2.c)
- - cshow didn't restore the current font properly. (gschar.h,
- gschar.c)
- - The check for whether characters can be cached didn't consider
- PaintType values other than 0 and 2. (gschar.c)
- - The bounding box device didn't handle PageCount properly.
- (gdevbbox.c)
- - Uncached fonts with a next_char procedure didn't set the glyph
- properly. (gschar.c)
- - Parallelograms with ax < bx, ay < by, and the 'a' edge to the
- right of the 'b' edge weren't filled, causing pixels to be omitted from some
- highly skewed images. (gdevddrw.c)
- - 12-bit-per-pixel images in portrait orientation filled each scan
- line with the value of the last pixel -- i.e., didn't work. (gximage4.c)
- - The path representation of a clipping path could include some
- inappropriate, leftover path segments. (gxcpath.c)
- - The angle for the miter check was computed in device space rather
- than in user space. (gxstroke.c)
- - TrueType fonts were lumpy, and the accents of accented characters
- were placed incorrectly. (gstype42.c)
- - Some macros used for generating device prototypes didn't
- parenthesize all uses of their parameters, causing possible errors if the
- parameters were expressions rather than numeric constants. (gdevprn.h)
- - When banding, strip halftones (typically produced by
- AccurateScreens) sometimes didn't have the correct phase. (gxbitmap.h,
- gxclread.c)
- - A minor change was required for correct compilation with Microsoft
- VC++. (memory_.h)
- - Under certain conditions, character shapes could get wildly
- distorted by hints. (bug introduced in 5.01) (gxhint3.c)
-
- For greater Adobe compatibility:
- - Changes reversepath so that the implicit line created by closepath
- is not considered a "segment". (gxpath2.c)
-
- Fixes some minor compilation warnings not affecting code functionality.
- (gstype1.c)
-
- Changes the font and scaled-font caches so that if the font has a UID
- (UniqueID or XUID), the UID and FontType are both considered part of the
- key, and we don't cache fonts with non-zero PaintType. (The Red Book says
- that changing anything except the Encoding should also change or remove the
- UID, but some files don't do this. The current fix is probably not
- sufficient, but it is a step in the right direction.) (gxfcache.h,
- gxccache.c, gxccman.c)
-
- Splits off the definitions of font_type and fbit_type into a separate file,
- since gxfcache.h now needs font_type. (gxfcache.h, gxfont.h, gxftype.h)
-
- Makes the Flex feature in Type 1 fonts conform to the published
- specification, rather than always producing curves. The comment in the code
- (and in the NEWS entry for release 2.6) says that this breaks some very old
- Adobe fonts: if this turns out to be a problem, we'll figure out a test that
- will do the right thing for these fonts. (gstype1.c)
-
- Provides 'double' versions of some API functions to accommodate the
- increased use of doubles in the interpreter. (gschar.h, gschar.c)
-
- Adds a compile-time option to force the use of strip halftones, for
- debugging. (gshtscr.c)
-
- Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
- only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
- This appears to help with dropouts at certain sizes. (gxhint2.c)
-
- Makes a few changes for clean compilation on BeOS. (stdpre.h, stat_.h,
- gxcpath.c)
-
- Version 5.01 (6/22/97)
- ======================
-
- This fixes a few bugs reported in the 5.0 release. This will be a
- commercially supported release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - README referred to an obsolete file devarch.txt. (README)
- - The comment on flip4x12 had a typo. (gsflip.c)
- - The algorithm comments for adjusted_y_spans_pixel weren't precise
- enough. (gxfill.c)
- - The usage message printed by the ps2pdf script didn't indicate
- that one can now insert options before the input file name. (ps2pdf)
- - The file searching documentation didn't indicate that paths
- beginning with ./ or ../ are considered "explicit" and not subject to
- searching. (use.txt)
- - The description of SEARCH_HERE_FIRST in the per-platform makefiles
- indicated that it only applied to initialization files, not to files
- specified on the command line as well. (*.mak)
- - There were still some references to 16-bit implementations.
- (install.txt)
-
- Clarifies that -dNODISPLAY also suppresses output to other devices.
- (use.txt)
-
- Adds the e-mail address for reporting problems to the bug report form, and
- also a space to report makefile changes. (bug-form.txt)
-
- Adds a note under -g indicating that it fixes the media size. (use.txt)
-
- Adds an explanation of why Ghostscript can't use the system libraries for
- the JPEG package. (make.txt)
-
- Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
- and other fonts whose original FontMatrix involves skewing or rotation.
- (psfiles.txt)
-
- Updates the uniprint documentation slightly. (devices.txt)
-
- Notes that the new lj5 drivers do not work with the LJ5L. (devs.mak)
-
- Modifies the Aladdin Free Public License slightly to make it clearer that
- the exception for freely redistributable CD-ROMs only applies if the CD-ROM
- is being distributed by itself, not with anything else commercial. (This
- has always been the case, but the previous wording wasn't clear enough.)
- (PUBLIC)
-
- Notes that gcc with -O still has code generation problems on H-P RISC
- machines. (make.txt)
-
- Adds a pointer to Martin Lottermoser's hpdj driver. (new-user.txt)
-
- Enhances and reorganizes the documentation for building Ghostscript, in
- response to user feedback. (make.txt, install.txt)
-
- Adds a description of the EPSF recognition feature. (language.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - string__h was misspelled string_h in one place. (lib.mak)
- - gs_dps.ps wasn't installed by "make install". (unix-end.mak)
- - ccgs (used with non-ANSI C compilers) didn't do the right thing
- with -DPNG_USE_CONST. (ccgs)
-
- Adds support for version 96 of libpng, and updates all the makefiles to
- reference it. (libpng.mak, *.mak)
-
- Updates the MSVC makefiles to get rid of some warning messages and provide a
- way to specify a library path for the final link. (msvc*.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The usage message for the gslp utility had a minor typo.
- (gslp.ps)
- - The "line printer" utility didn't expand tabs properly when
- producing PostScript output. (gslp.ps)
- - The gslp utility didn't automatically include the date. (gslp)
- - The line printer scripts didn't pass the script name to the
- utility program, so the usage message didn't use the correct name. (gsbj*,
- gsdj*, gslj*, gslp*, lp*)
-
- Modifies the gslp utility so that invoking it with no arguments prints the
- usage message. (gslp.ps)
-
- Adds the ability to specify the number of bits per component to the
- CMYK-viewing utility. (viewcmyk.ps)
-
- Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
- omitting the output file name, automatically replacing the extension of the
- input file with .pdf. (ps2pdf.bat)
-
- Drivers
- -------
-
- Fixes bugs:
- - Some compilers didn't accept a #define with the macro name on the
- next line. (gdevpx.c)
- - The procedure dash_pattern_eq was defined in two places.
- (gdevpdf.c)
- - The uniprint driver sometimes dropped some output or got confused,
- because of a misunderstanding about how to update device procedure vectors
- properly. (gdevupd.c)
- - The PostScript and EPS writers produced binary output for images,
- which generally can't be sent to PostScript printers. (gdevpsdf.h,
- gdevpdf.c, gdevps.c)
- - The EPS writer put a %%EOF at the end of the file, which might
- cause problems for some spoolers if the file is embedded in another.
- (gdevps.c)
-
- Changes the implementation of printer drivers so that they flush the output
- stream after each page. We aren't absolutely sure that this is a good idea,
- but it prevents certain anomalous behavior where the last page isn't ejected
- properly. (gdevprn.c)
-
- Implements a long-delayed update to the mgr drivers, to restore the color
- mapping to an older one. (gdevmgr.h, gdevmgr.c)
-
- Updates the uniprint driver with a number of changes from its author.
- (gdevupd.c)
-
- Platforms
- ---------
-
- Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
- other platforms, to the MS Windows platforms. (bcwin32.mak, msvc4.mak,
- msvc5.mak, watcw32.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - composefont defined the resource with the font name and font
- directory interchanged. (gs_cmap.ps)
- - With dFIXEDMEDIA, documents requesting other sizes caused an error
- instead of clipping the page. (gs_init.ps)
- - PageSize Policy = 7 wasn't implemented. (However, the current
- implementation is wrong.) (gs_setpd.ps, zmedia2.c)
- - FontType resource 42 wasn't defined even if Type 42 fonts were
- supported; similarly for FontType 9, 10, and 11 for CIDFonts. (gs_cidfn.ps,
- gs_res.ps)
- - The error handling machinery would break if the name /errordict
- was redefined. (gs_init.ps)
- - Level 1 systems got an /undefined in .doneshowpage. (zdevice.c,
- zdevice2.c)
- - Because of an initialization order problem, copy didn't work on
- gstates. (zgeneric.c)
-
- Adds a naive implementation of findcolorrendering. (gs_lev2.ps, gs_res.ps)
-
- Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
- 4.03, errors print a hex dump and exit with a non-zero code instead of
- printing a readable message and continuing. (We aren't sure that this
- change didn't undo the fix in 5.0 regarding calling startjob from
- run_string.) (gs_init.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. This was fixed in 4.02, but the fix stopped working with the
- introduction of .runexec. (pdf_main.ps)
-
- Makes the cross-reference reader accept a startxref value that points at the
- EOL before the xref line. The Adobe documentation doesn't allow this, but
- some real files are this way. (pdf_main.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The bounding box of a completely empty path was reported as
- garbage. (gxpath2.c)
- - Stroking a path with more than one segment didn't produce correct
- output when anti-aliasing was used. (gspaint.c)
- - The alpha-buffer device returned an incorrect clipping box,
- causing output to be discarded. (gdevabuf.c)
- - gx_forward_get_clipping_box passed the wrong device to the target
- procedure, producing incorrect results. (gdevnfwd.c)
- - The sin/cos procedure did some unnecessary computations
- (performance bug only). (gsmisc.c)
- - The procedure for adjusting the ends of curves to match the
- tangents did some unnecessary computations (performance bug only).
- (gxpcopy.c)
- - RAM-based banding always gave an invalidfileaccess error, due to a
- typo in memfile_fopen. (gxclmem.c)
- - The algorithms for deciding whether a line is thin still weren't
- correct. (gxstroke.c)
- - The fill adjustment values for the any-part-of-pixel case (adjust
- = 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
- additional pixels if the higher coordinate was integral. With considerable
- trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
- thing in every case we can think of. (gxfill.c)
- - When banding, paths were clipped to only 0.5 pixel outside their
- bounding box, which may be slightly too conservative; 1 pixel is safer.
- (gxclpath.c)
- - The algorithm for testing whether an adjusted Y value spanned a
- pixel center was incorrect, causing some pixels to get colored incorrectly.
- (gxfill.c)
- - 24-bit devices could cause a memory fault, by accessing a pointer
- just beyond the end of the line pointer array. (gdevm24.c)
- - Astonishingly enough, the determination of which hints were
- applicable to a given segment of a Type 1 character was wrong in several
- different places. Fixing this in a way that correctly handled all allowed
- permutations of the coordinate system was not simple. (gxfont1.h,
- gxhint1.c, gxhint3.c)
- - The debugging printout macros didn't include the syntactic hack to
- prevent an 'else' from begin assigned to the wrong 'if'. (gdebug.h)
- - The bbox device was accidentally limited to 130 x 130 pixels (not
- 130" x 130"). (bug introduced in 5.0) (gdevbbox.c)
- - The bbox device didn't recognize PageBoundingBox in put_params,
- causing a possible /undefined error on [g]restore. (gdevbbox.c)
- - setlinewidth didn't take the absolute value of its operand.
- (zgstate.c)
- - Some code formatting was slightly off. (gximage5.c)
- - Some extra pixels were written for Interpolated images, but they
- were immediately overwritten, so the output was correct. (gximage5.c)
-
- Changes the data flipping API from a macro to a procedure, adds a return
- value, and makes the individual flipping procedures private. (gsflip.h,
- gsflip.c)
-
- Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
- through the band list. (gxclpath.h, gxclimag.c, gxclread.c)
-
- Adds (under an #ifdef FUTURE) code to allow passing interpolated images
- through the band list. NOTE: interpolated images will appear slightly
- different than without banding, because the part of the image intersecting
- each band will be scaled slightly differently in the (device) Y direction.
- (gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
-
- Changes Type 1 hinting so that when it moves points on a curve, it does so
- by properly scaling the curve in the given direction. (gxhint3.c)
-
- Version 5.0 (6/6/97)
- ====================
-
- This is the first public release since 4.03.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
- (use.txt)
- - There was still a reference to pstoppm in the documentation.
- (psfiles.txt)
- - The JPEG DOS source site information was out of date. (jpeg.mak)
- - The list of devices included in the distributed Unix makefiles was
- out of date. (make.txt)
- - The MCU size limitation on the DCT filters was documented
- incorrectly. (current.txt)
- - The URL for the uniprint driver home page was incorrect.
- (devices.txt)
- - The makefiles referred to sfilefd.c, which is now named sfxfd.c.
- (gs.mak, *.mak)
-
- Adds a VMS help file. (gs-vms.hlp)
-
- Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
- long obsolete, and updates the documentation for current versions.
- (make.txt)
-
- Notes that there may be a problem with libpng version 0.95. (libpng.mak)
-
- Adds some specific documentation for the JPEG drivers. (devices.txt)
-
- Adds a suggestion that people compiling Ghostscript check the values of
- JVERSION and PVERSION. (make.txt)
-
- Removes the requirement for setting the LIB environment variable when
- compiling with MSVC. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - There were a number of small errors in the new OpenVMS makefile.
- (openvms.mak)
- - The MSVC makefiles omitted a necessary switch to work around some
- "unspecified Pentium bugs". (msvccom.mak)
- - The Borland makefile wasn't even close to working; fixing it
- required moving the compilation rule for genarch.exe into the
- compiler-specific makefiles. (bcwin32.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
- - There were some (harmless) undefined macro references in the MSVC
- makefile. (msvccom.mak)
-
- Makes it unnecessary to set the LIB environment variable for MSVC.
- (msvc4.mak, msvc5.mak, wincom.mak)
-
- Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
- (make.txt)
-
- Updates vms.mak yet again, hopefully for the last time. (vms.mak)
-
- Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
- DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
- include PCX format at all; adds jpeggray to all platforms that include jpeg.
- (devs.mak, *.mak)
-
- Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
- messages. (gs.mak)
-
- Removes obsolete makefiles from the fileset. (tccommon.mak, tctail.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - restore was broken if -dNOBIND was invoked. This fix should have
- been in the 4.81 fileset, but was left out due to operator error.
- (gs_dps1.ps)
- - Some compilers complained about macro argument replacement within
- a string literal. (isave.c)
- -dSAFER didn't allow opening the %stdxxx files, which caused the
- combination of -dSAFER and -dNOBIND to cause an infinite error.
- (gs_init.ps)
- - If C code used run_string to execute a startjob, an error
- occurred. (gs_init.ps)
-
- Library
- -------
-
- Fixes bugs:
- - Some compilers complained about macro argument replacement within
- a string literal. (gxclbits.c, gdevpdfi.c)
- - At certain resolutions, a 1-pixel line of the wrong color could
- appear at one edge of landscape-oriented monobit images. (This is the 4th
- or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
- (gxfixed.h, gximage1.c)
- - The optimized code for landscape monobit images overlooked the
- possibility of partial images, causing parts of images to be translated and
- possibly clipped. (Yes, it's that same fragile piece of code.)
- (gximage1.c)
- - The bounding box device allowed resetting its resolution, which
- could cause limitchecks from coordinate overflow. Our fix is to initialize
- the device to a very high resolution (4000 dpi), which reduces the maximum
- page size it can handle to about 130" on a side. (gdevbbox.c)
- - The bounding box device wasn't identified as a page device.
- (gdevbbox.c)
- - The bounding box device used alone disregarded changes in page
- size. (gdevbbox.c)
- - One old compiler didn't allow a structure member name to be the
- same as a typedef name. (gximage.h, gximage.c, gximage4.c)
- - The height and band intersection computations for banded images
- still weren't right, leading to inconsistencies in the band list and errors
- in the output (typically, thin horizontal white stripes at band boundaries).
- (gxclimag.c)
-
- Adds an extensive memory dump facility to the standard allocator.
- Eventually this should be moved into a separate file, but it would be too
- disruptive to do this just before a release. (gsalloc.c)
-
- Version 4.81 (6/1/97)
- =====================
-
- This is a last-minute set of bug fixes before the 5.0 release.
-
- Documentation
- -------------
-
- Adds some overlooked helpers to the list. (helpers.txt)
-
- Procedures
- ----------
-
- Makes a distinction between 2-part and 3-digit version numbers.
- (version.mak, vms.mak)
-
- Utilities
- ---------
-
- Develops the Type 1 to CFF converter a little further; it is still NOT
- USABLE. (t1tot2.ps)
-
- Removes the pstoppm.ps script, since the p*m drivers supersede it.
- (pstoppm.ps, unix-end.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PDF writer sometimes omitted an ET command before setting the
- clip path. (gdevpdf.c)
- - The PDF writer didn't initialize the "vector" state, leading to
- some redundant output (performance bug only). (gdevpdf.c)
- - The PDF writer wrote clip paths even when they included the entire
- page (performance bug only). (gdevpdf.c)
-
- Changes the PDF writer so that it recognizes not only the 14 built-in fonts
- but any font with the same UniqueID and metrics. This covers some common
- cases of re-registering a font with a variant Encoding. (gs_pdfwr.ps)
-
- Platforms
- ---------
-
- Fixes bugs:
- - SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows
- platforms. (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak)
-
- Adds code to remove "" around arguments in the command line passed to
- WinMain (MS Windows platforms). (dwmain.cpp, dwmainc.cpp)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - setsystemparams was broken. (gs_lev2.ps)
- - restore was broken if -dNOBIND was invoked. (gs_dps1.ps)
- - deviceinfo returned much more information than it should.
- (gs_dps.ps)
- - The fix for the default EndPage procedures not popping their page
- count operand from the stack was wrong. (gs_init.ps, gs_setpd.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The saved character origin took the translation component of the
- FontMatrix into account, which caused charpath on fonts with non-zero
- translation in the FontMatrix to produce incorrect results. (gschar.c)
-
- Removes incorrect access attributes on a couple of files. (gdevpdfm.c,
- gxclist.h)
-
- Version 4.80(limited) (5/28/97)
- =====================
-
- This is the candidate fileset for the 5.0 release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The one-line description of the color image rendering module was
- incorrect. (gximage3.c)
- - Some of the VMS documentation was out of date. (make.txt,
- use.txt)
- - The description of the file name separator for -sFONTMAP= was
- wrong. (use.txt)
- - PSFile was misspelled PSfile. (use.txt)
- - There were some minor typos. (gstype1.h)
- - The build instructions had a lot of obsolete information for PC
- environments, and didn't cover Microsoft Visual C++. (make.txt)
-
- Explains that -sPAPERSIZE= only specifies the default papersize, and that
- forcing a particular paper size also requires -dFIXEDMEDIA. (use.txt)
-
- Adds information about building with GNU make on OpenVMS. (make.txt)
-
- Clarifies the meaning of EOFC for streams. (strimpl.h)
-
- Documents the new dictionary argument for the eexecDecode filter.
- (language.doc)
-
- Procedures
- ----------
-
- Fixes bugs:
- - gs_epsf.ps didn't get installed on Unix systems. (unix-end.mak)
- - The code wouldn't build with libpng 0.95b. (libpng.mak)
- - One of the VMS scripts used CC_QUAL instead of CC_DEF.
- (vms-cc.mak)
- - version.mak wasn't included in a dependency list. (unix-end.mak)
-
- Brings the VMS DCL script up to date again (for the last time, we hope).
- (vms.mak)
-
- Modifies all platform-independent uses of upper-case command line arguments
- to deal properly with VMS, where the shell converts all command line
- arguments to lower case, without requiring quotation. (devs.mak, gs.mak,
- int.mak, lib.mak, zlib.mak)
-
- Moves the compilation rules for the third-party libraries into gs.mak, so
- they can be used to compile the callers as well. (gs.mak, jpeg.mak,
- libpng.mak, zlib.mak)
-
- Adds a set of files that allow building on OpenVMS using GNU make (slightly
- patched). The timing on this is unfortunate, but we've wanted this for a
- very long time. NOTE: be sure to look in the OpenVMS section of make.txt
- for information on patching GNU make. (openvms.mak, append_l.com,
- rm_all.com, rm_one.com, copy_one.com)
-
- Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and
- Microsoft Visual C++ (versions 4.x and 5.0). The timing on this is
- unfortunate too, but having this capability is so important that we couldn't
- pass it up. (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
-
- Removes now-obsolete makefiles. (dwcommon.mak, msc.mak, msvcwint.mak,
- mscbegin.bat, watcwin.mak)
-
- Utilities
- ---------
-
- Extends echogs to work in VMS environments, where the shell converts all
- command line arguments to lower case, without requiring quotation.
- (echogs.c)
-
- Adds a sketch of a utility for converting Type 1 fonts to CFF. DOESN'T WORK
- YET: DON'T TRY TO USE IT. (t1tot2.ps, type1ops.ps, writecff.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A type declaration wasn't compatible with libpng 0.95.
- (gdevpng.c)
- - kshow wasn't handled properly when producing PDF output.
- (gs_pdfwr.ps)
- - The PDF writer put out unnecessary ET/BT commands. (gdevpdfx.h,
- gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
- - The PCL XL writer put out real numbers for the miter limit, which
- are not allowed (!). (gdevpx.c)
- - The PCL XL writer didn't combine successive curves into a single
- curve command (performance bug only). (gdevpx.c)
- - The PCL XL writer could write uncompressed images with a tag
- saying they were compressed. (gdevpx.c)
- - The PCL XL writer always selected U.S. letter paper, rather than
- the requested size. (gdevpxen.h, gdevpx.c)
- - The PCL XL writer reselected the paper size on every page, even if
- it hadn't changed. (gdevpx.c)
- - The PCL XL writer always used shorts for line and curve
- coordinates, rather than using bytes when possible (performance bug only).
- (gdevpx.c)
- - Because of a compiler bug, a macro with argument conflicted with a
- variable name. (gdevpdfx.h, gdevpdf.c)
- - A picky compiler objected to an extern for an undefined structure.
- (gdevpsdf.h)
- - The PDF writer sometimes didn't reset the clipping path, causing
- bitmaps or rectangle to disappear. (gdevpdf.c, gdevpdfi.c)
- - The PDF writer produced invalid output if the first page was
- blank. (gdevpdf.c)
- - The AutoRotatePages parameter for PostScript and PDF output (which
- doesn't actually do anything yet) incorrectly expected a Boolean value
- rather than an enumeration. (gdevpsdf.h, gdevpsdf.c)
- - Some places returned -1 for an error without calling gs_note_error
- or gs_return_error. (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c)
- - The PCL XL writer produced extremely large files because it didn't
- download character bitmaps. (OK, this isn't really a bug fix.) (gdevpx.c)
- - The forwarding implementation of get_page_device didn't do the
- right thing. (gdevnfwd.c)
- - The x11alpha device didn't implement get_params properly, leading
- to anomalous behavior. (gdevxalt.c)
- - The PDF writer produced incorrect Count values for outlines: the
- count only counted descendant leaves, omitting intermediate nodes.
- (gdevpdfm.c)
-
- Removes an assumption that images have at most 4 components. (gdevpdfi.c)
-
- Adds an x11gray2 device, primarily for debugging. (devs.mak, gdevxalt.c)
-
- Updates the unified printer driver with a newer version. (uninfo.ps,
- gdevupd.c, *.upp)
-
- Platforms
- ---------
-
- Adds the P*M devices and the X11 devices (commented out) to the OS/2
- makefile. (os2.mak)
-
- Updates the MS Windows platform to be compatible with Microsoft Visual C++
- (as well as Watcom and Borland compilers). (gsdll32.def, gdevmswn.h,
- gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp,
- gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - Certain synthetic fonts incorrectly were loaded into local rather
- than global VM. (These fonts are not part of the standard distribution.)
- (gs_fonts.ps, gs_pfile.ps, *ss*.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The FAKEFONTS scan could leave junk on the stack. (gs_fonts.ps)
- - Dynamically loading known encodings on demand left junk on the
- stack, causing a typecheck error. (gs_res.ps)
- - Some 'static' declarations were missing (gcc lossage). (iname.c)
- - Some internal operators didn't have names, leading to unhelpful
- error printout. (zfileio.c)
- - The resource "operators" didn't always restore the stacks properly
- on an error. (gs_res.ps)
- - The CID font code left a garbage value on the stack during
- loading. (gs_cidfn.ps)
- - The defineresource implementation for built-in resources like
- FMapType didn't leave the resource "value" on the stack. (gs_res.ps)
- - If an operator defined by a procedure was bound into a packed
- procedure, the stack-protection feature wasn't effective. (interp.c)
- - findfont didn't restore the stack if it failed. (gs_res.ps)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. (gs_init.ps, zdevice2.c)
- - The default EndPage procedures didn't pop their page count operand
- from the stack. (gs_init.ps, gs_setpd.ps)
- - If the argument of findfont wasn't a name or a string, and no font
- with that key had been registered, an error occurred. (gs_fonts.ps,
- gs_res.ps)
-
- Updates most of the remaining pseudo-operators to take advantage of stack
- protection. (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps,
- gs_lev2.ps, gs_pdfwr.ps)
-
- Splits the image operators into a separate file from the path painting
- operators. (This should have been done a long time ago.) (iimage.h,
- zimage.c, zpaint.c)
-
- Adds more of the implementation of the NeXT alpha and compositing
- operations, under an #ifdef DPNEXT. (iimage.h, zcolor1.c, zdpnext.c,
- zimage.c)
-
- Adds more of the implementation of DPS contexts. These are still not
- usable. (icontext.h, icontext.c, zcontext.c, zmath.c)
-
- Changes the help message to describe -dBATCH instead of -c quit.
- (imainarg.c)
-
- Recognizes the dictionary argument for the eexecDecode filter. (zmisc1.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The tracing message when starting to decode 1-D fax data reported
- the run_color incorrectly. (scfd.c)
- - In the CCITTFaxDecode filter, if a buffer boundary fell between a
- makeup code and a final zero-length termination code, an ioerror could
- occur. (scfd.c)
- - Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should
- cause Rows to be ignored. (scfd.c)
- - If an output stream returned EOFC, an infinite loop might result.
- This problem (and the fix) are in the same fragile code as the EOD fix in
- 4.74, and we may again have introduced a new bug. (stream.c)
-
- Changes the eexecDecode filter so that instead of a number, it can take a
- dictionary with two keys, seed and lenIV. (Having eexecDecode skip initial
- bytes at all was a design bug that is too late to fix.) (sfilter.h,
- seexec.c)
-
- Library
- -------
-
- Fixes bugs:
- - The default mapping from RGB+alpha to RGB didn't lighten
- (premultiply) the color according to the alpha value. (gxcmap.c)
- - The angle error metric for rational tangent screen parameters
- should be simply the difference in angle, not a ratio. (gshtscr.c)
- - gs_setcolorscreen and gs_sethalftone didn't initialize an
- allocator pointer, leading to memory access errors. (gsht1.c)
- - If a banded image was clipped, an invalid band list could be
- produced. (gxclimag.c)
- - A picky compiler wouldn't allow an enum to be &&'ed with a
- boolean. (gschar.c)
- - A short-sighted compiler didn't allow the use of actual procedure
- names (as opposed to procedure variables) in a conditional expression.
- (gxfill.c)
- - A compiler objected to a name longer than 31 characters. (gzht.h,
- gsht.c, gxclread.c)
- - The height computations for banded images were not consistent,
- possibly leading to invalid band lists. (gxclimag.c)
- - copypage didn't reset the band writer and band reader bookkeeping
- consistently, leading to incorrect output and possible errors. (gxcldev.h,
- gxclist.c, gxclread.c)
- - When banding, changing the halftone could lead to accessing memory
- after freeing it. (gxclread.c)
- - When using disk files for band storage, showpage didn't actually
- delete or truncate the band list file, possibly causing subsequent copypage
- operations to become confused. (gxclfile.c)
- - When banding, having more than one image operator in progress at a
- time confused the rasterizing pass and could produce arbitrary errors. From
- PostScript, this can only happen in the case of an image whose data source
- was a procedure-based stream that itself invoked an image operator: this is
- a senseless and perverse thing to do, but it shouldn't break the code (and a
- Genoa CET file actually does it). (gxclist.h, gxclimag.c, gxclist.c)
- - Some picky compilers objected to negating unsigned values.
- (gsuid.h, gsht.c, gsmemory.c, gxpcopy.c)
- - When banding, if a 90- or 270-degree rotated monobit image was
- clipped, invalid memory accesses could occur. (gximage.h, gximage1.c)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. Fixing this requires removing the incrementing of the count
- from the library level altogether. (gsdevice.c)
- - When rendering a subrectangle of an image, the X DDA was
- initialized incorrectly, causing possible errors. We think this only
- affected certain banded images. (gxdda.h)
-
- Adds a provision for images with an alpha component, under an #ifdef DPNEXT.
- ****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ****** (gsiparam.h,
- gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c,
- gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******,
- gximage5.c)
-
- Adds a return_if_error macro to capture the common idiom of making a call
- and then returning its value if that value is negative (error). (gserror.h)
-
- Version 4.74(limited) (5/5/97)
- =====================
-
- This fileset is supposed to fix all remaining errors reported by the Genoa
- CET, and is intended to be the last incremental test fileset before the 5.0
- release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Mark procedures are *not* executed in the normal return case.
- (estack.h)
- - The line_params element of a gs_imager_state is *not* allocated
- separately. (gsstate.c)
- - The value passed to the PDF writer for text is a dictionary, not
- an array. (gdevpdft.c)
-
- Improves the documentation of gstate memory management. (gsstate.c)
-
- Documents end_status = EOFC for writing streams. (stream.h, strimpl.h)
-
- Clarifies memory management for halftones and device halftones. (gsht1.h,
- gxdht.h, gxht.h, gzht.h)
-
- Removes the "experimental" tag from the PostScript and EPS writers.
- (devs.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The viewpcx utility scaled images improperly. (viewpcx.ps)
- - If a PDF file used F instead of f for filling a path, pdf2ps
- didn't output the fill operation. (pdf_base.ps)
-
- Changes the ps2pdf script so that, like pdf2ps, it allows debugging
- switches. (ps2pdf)
-
- Drivers
- -------
-
- Fixes bugs:
- - The vgalib driver didn't clip monobit images properly.
- (gdevvglb.c)
- - The X driver asked for exposure events to be reported, but never
- read them, causing the event queue to grow indefinitely. (gdevxini.c)
- - The "vector" drivers and the PDF writer didn't properly keep track
- of whether the current clipping region was the default one. (gs_pdfwr.ps,
- gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c)
- - The PDF writer had word and character spacing interchanged.
- (gdevpdft.c)
- - The PDF writer scaled word and character spacing incorrectly.
- (gdevpdft.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The user object operators didn't leave the stack in a clean state
- if they failed. (gs_dps2.ps)
- - UserObjects wasn't actually defined. (gs_dps2.ps)
- - deviceinfo and set/currenthalftonephase were defined even if the
- dps feature wasn't selected. (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps,
- zdps.c, zdps1.c)
- - The dps feature didn't automatically include the level2 feature,
- which it needs. (int.mak)
- - The DPS user names mechanism didn't work, since the user names
- array was subject to save and restore. (It still doesn't really work --
- there is no provision for expanding the user names array, which is created
- with length 0.) (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c)
- - The DPS context operators didn't do all the necessary error
- checking. (zcontext.c)
- - The debugging printout for names printed the name index in hex
- without identifying it as such. (idebug.c)
- - Adding the first non-name key (or name key with a name index
- beyond 4K) to a dictionary that had any deleted entries could cause some
- entries to apparently disappear. (idict.c)
- - If a sub-table of the name table was freed during garbage
- collection, memory could be left in an inconsistent state. (iname.c, igc.c)
- - findfont didn't restore the stacks reliably if an error occurred.
- (gs_fonts.ps)
- - definefont with an invalid Type 0 font sometimes added a FID entry
- (with a dangling pointer) if it failed. (Recovering properly from a VMerror
- during font creation would require a much more complicated fix than this,
- but since we expect a garbage collection to occur in that case, we aren't
- concerned about it.) (zfont0.c)
- - Reading parameter values from a dictionary could access beyond the
- end of the array that keeps track of which entries had been referenced.
- (idict.h, idict.c, iparam.c)
- - Halftone data was allocated in the current VM rather than in the
- same VM as the halftone dictionary or procedure. (Fixing this includes
- updating code as necessary for the change in halftone and device halftone
- allocation.) (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c)
- - Closed non-executable files on the e-stack could cause a restore
- to be invalid. (zvmem.c)
-
- Adds skeleton code for the NeXT Display PostScript alpha and compositing
- operators. This is not ready for use yet! (errors.h, gs_dpnxt.ps,
- zdpsnext.c)
-
- Implements more of state saving and restoring for Display PostScript
- contexts. This is not ready for use yet either. (int.mak, icontext.h,
- istack.h, icontext.c, zcontext.c)
-
- Adds stub code for the Display PostScript view clip operators. (gs_dps.ps,
- zdps.c)
-
- Removes the obsolete PPM-writing operator. (int.mak, vms.mak, *.mak,
- zwppm.c)
-
- Makes the random number generator state public so it can be stored in the
- context state. (zmath.c)
-
- Changes the flag for forcing global garbage collection to a run-time
- variable, for debugging. (igc.c)
-
- Changes the handling of job control so that it doesn't use procedures that
- produce an execstackoverflow when being printed. (gs_init.ps)
-
- Updates code as necessary for the change in reference counting. (zcie.c,
- zcrd.c)
-
- Updates code as necessary for the change in off-stack gstate copying.
- (zdps1.c)
-
- Removes a small bit of obsolete code. (interp.c)
-
- Streams
- -------
-
- Fixes bugs:
- - An output stream that was not the last one in a pipeline could
- incorrectly be asked to write its EOD marker more than once. (The fix is
- very fragile and may have introduced new bugs.) (stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - The gx_device_halftone_release procedure was declared in two
- different header files. (gzht.h)
- - Off-stack copying of gstates could lead to a situation where
- different parts of a single gstate were owned by different allocators; this
- could cause them to be freed improperly, corrupting memory. We fixed this
- partly by making the mixed ownership situation work, and partly by copying
- more of the gstate when off-stack gstates are involved. Unfortunately, the
- fixes are subtle and may have introduced new bugs. (gsstate.h, gsht.c,
- gsht1.c, gspcolor.c, gsstate.c)
- - If an error occurred while creating a Pattern instance, the
- partially initialized instance structure wasn't freed. (gspcolor.c)
- - Halftones and device halftones didn't allocate their clones or
- their subsidiary structures with the correct allocator. (gsht.c, gsht1.c)
- - The error statement when allocating a reference-counted object had
- to be a control transfer. (gsrefct.h)
- - Copying gstates incorrectly copied the memory and saved pointers,
- and the pointer to the dash pattern. (gsstate.c)
- - Flatness values less than 0.5 produced far more line segments than
- necessary (roughly the square of the required number). Fixing this may have
- bad effects on character quality -- this remains to be seen. (gxpflat.c)
- - An error during installation of a halftone could leave things in
- an inconsistent state. (gsht.c)
- - The API didn't provide enough flexibility with respect to memory
- management for halftones, or guarantee consistent allocation of a halftone
- and its subelements. (gsht1.h, gsht.c, gsht1.c, gshtscr.c)
- - Releasing a path didn't clear enough pointers to ensure clean
- garbage collection. (gxpath.c)
- - Finalizing or discarding a (cached) scaled font didn't properly
- unlink it from the scaled_fonts list. (gsfont.c)
- - Invoking an image operator within the BuildChar procedure for a
- charpath caused an infinite loop. (gsimage.c)
- - The bookkeeping for the scaled font cache was incorrect: the count
- didn't always get decremented when a scaled font was freed. (gsfont.c)
- - "High level" masked images were written incorrectly in the band
- list as black-and-white images. (gxclimag.c)
- - For "high level" images with fewer than 4 samples per pixel,
- non-standard Decode values were written incorrectly in the band list.
- (gxclimag.c)
- - The color wasn't set correctly for "high level" masked images.
- (gxclimag.c)
- - The fastest case of monobit image rendering could get a memory
- access error if the image lay partly outside the page. (gximage1.c)
- - Clipping with an empty path was a no-op, rather than clipping out
- everything. (gxcpath.c)
-
- Makes reference-counted objects remember which allocator owns them: this
- entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference
- counting. This was necessary to fix the off-stack gstate copying problem.
- (gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c,
- gsstate.c, gxclread.c)
-
- Refactors the unpacking of image data, to make unpacking available as a
- general facility. (gximage.h, gxsample.h, gximage.c, gximage0.c,
- gximage1.c, gximage4.c, gxsample.c)
-
- Enhances -Z? so that before freeing an object, it checks that the object was
- owned by the correct allocator. (gsalloc.c)
-
- Version 4.73(limited) (4/19/97)
- =====================
-
- This is an incremental bug fix release made primarily to provide a
- synchronization point for an upcoming trip.
-
- Documentation
- -------------
-
- Fixes bugs:
- - A reference to the uniprint documentation was incorrect.
- (current.txt)
- - -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required;
- this is also required for SGI IRIX. (make.txt)
-
- Adds argument/result comments to all the operators defined in gs_lev2.ps.
- (Eventually we will do this for all operators defined as PostScript
- procedures.) (gs_lev2.ps)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The makefiles didn't provide a default value for GCONFIG_EXTRAS.
- (gs.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - pdf2ps didn't work with TrueType or compressed Type 1 fonts.
- (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A cast from byte to char was omitted. (gdevpdfm.c)
-
- Platforms
- ---------
-
- Updates the VMS script (again). (vms.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - A module that used strlen didn't include string_.h. (zdevice.c)
- - Because of some bad PostScript code in FrameMaker output, identity
- rather than unity black generation and undercolor removal functions are
- required on black-and-white devices. (gs_init.ps)
- - A harmless internal error during initialization left bogus
- information in $error. (gs_cidfn.ps)
- - startjob didn't clear the execution stack. Fixing this required
- NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop,
- and .stopped, which are not supposed to be used by any external code.
- (startjob will still give errors if executed in a file that isn't being
- piped from stdin; this will take longer to fix.) (gs_init.ps, gs_lev2.ps,
- iref.h, imain.c, interp.c, zcontrol.c, zfile.c)
-
- Adds a new .execn operator, part of the startjob changes, that allows
- pushing multiple items on the exec stack. Eventually this will allow us to
- get rid of many dynamically created closures. (zcontrol.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Landscape-mode PDF files weren't rotated properly. (gs_pdf.ps,
- pdf_main.ps)
-
- Makes the default PDF configuration notify users more informatively when
- encountering an encrypted file. (pdf_sec.ps)
-
- Streams
- -------
-
- Makes the RunLengthEncode filter always generate optimally compressed
- output. We did this because we thought one of the Genoa CET files loops
- forever if this is not the case; but we were wrong. (srle.c)
-
- Library
- -------
-
- Fixes bugs:
- - If one coordinate of a position or distance overflowed the
- internal representable range, the other coordinate became garbage. (bug
- introduced in 4.70) (gspath.c)
- - The bounding box computation for strokes was slightly too large
- (sometimes much too large). (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c)
-
- Adds (under an #if 0) an experimental alternate halftone cell choice
- algorithm. (gshtscr.c)
-
- Adds a better comment to a particularly obscure line of C code.
- (gxclimag.c)
-
- Version 4.72(limited) (4/14/97)
- =====================
-
- This is another bug fix release, motivated mostly by Genoa testing. It also
- updates the new uniprint driver with a major revision, and upgrades CFF
- support a little bit.
-
- Documentation
- -------------
-
- Fixes bugs:
- - -dNOGC only disables default automatic garbage collection, not all
- garbage collection. (use.txt)
- - Apparently a different set of flags is needed for newer H-P
- compilers. (make.txt)
-
- Replaces the tiny FAQ with a pointer to the on-line FAQ. (use.txt)
-
- Updates the documentation for the uniprint driver. (devices.txt)
-
- Clarifies the fact that Ghostscript reads Fontmap files from *all*
- directories in the search list. (use.txt)
-
- Notes that building on Linux may require SM and ICE in the list of X
- libraries. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - An -include type42 was omitted from the level2 module description.
- (int.mak)
- - A mention of $(ECHOGS) in the rule for sfile should have been
- $(ECHOGS_XE). (lib.mak)
- - The pcx2up sample device should have been put in devs.mak rather
- than lib.mak. (devs.mak, lib.mak)
- - scanchar.h and scantab.c belong in the library, not the
- interpreter. (devs.mak, int.mak, lib.mak)
- - Some _h definitions were used before being defined, or weren't
- defined at all. (devs.mak, lib.mak)
- - The JPEG driver was missing a dependency. (devs.mak)
- - The PDF writer was missing a dependency. (devs.mak)
- - Building Level 1 systems was no longer possible. (int.mak)
-
- Updates the VMS build scripts. (vms.mak, vms-decc.mak)
-
- Adds *.upp to the list of files installed under Unix. (unix-end.mak)
-
- Adds rules to the Unix makefiles to build two library files: gs.a,
- consisting of the entire PostScript/PDF interpreter lacking only gs.c, and
- gslib.a, consisting of the graphics library without the gslib.c test driver.
- (ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The PS/EPS writers could generate a reference to an undefined
- name. (gdevps.c)
- - The PDF writer produced incorrect output for multi-level outlines.
- (gdevpdfm.c)
- - The PDF writer didn't convert /Action to /A, and /Action/Subtype
- to /S, in Annot dictionaries. (gdevpdfm.c)
- - The PDF writer didn't work in Level 1 systems. (gs_pdfwr.ps)
- - The PDF writer didn't transform /Rect and /R values to current
- user coordinates. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c)
- - The PNG writer could refer to the 3 predefined stdio files even in
- environments where this was undesirable. (gdevpng.c)
- - The PDF writer had a compiled-in limit of 100 pages of output.
- (gdevpdfx.h, gdevpdf.c)
-
- Updates the uniprint driver with a major revision that uses device
- parameters that can be set from the command line, rather than PostScript
- code, for configuration choices. (gdevupd.c, *.upp)
-
- Platforms
- ---------
-
- Fixes bugs:
- - gp_enumerate_files_next had no way to return an error. (gp.h,
- gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT
- IMPLEMENTED YET ******
- - On the Watcom platform, CPU_TYPE >= 486 didn't automatically set
- FPU_TYPE to 387. (wccommon.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Caching the current device in userdict could create dangling
- references. (gs_init.ps, gs_pdfwr.ps, zdevice.c)
- - If an error occurred in a BuildChar or BuildGlyph procedure, the
- graphics state stack wasn't restored. (ichar.h, zchar.c, zchar2.c)
- - There was an obsolete check for a structure when cleaning up after
- a show operator. (zchar.c)
- - Attempting to show a character with no associated glyph in a Type
- 3 font with a BuildGlyph procedure caused an error. (zchar.c)
- - noaccess on a read-only dictionary didn't give an error.
- (ztype.c)
- - The dictionary passed to a Pattern's PaintProc was the original
- template, not the copy made by makepattern. (gs_lev2.ps)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (zfont0.c, zfont2.c)
- - Files run under job control caused an error when terminating.
- (gs_init.ps)
- - setpagedevice didn't protect itself against malfunctioning
- BeginPage or EndPage procedures. (The protection is still not perfect.)
- (gs_setpd.ps)
- - .type42execchar called font_param redundantly. (zchar42.c)
- - The font operators didn't protect themselves well enough against
- bogus font dictionaries. (zfont.c, zfont0.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (zchar.c)
- - If an error occurred within the PaintProc of a form, the graphics
- state stack was left with an extra entry. (gs_lev2.ps)
- - Registering a font under a second name could corrupt data
- structures. (zfont2.c)
- - Different scalings of the same font should have "equal" fontIDs,
- to match the Adobe implementations. (iutil.c)
- - Errors detected by PostScript code during initialization either
- allowed execution to continue or produced a hex stack dump, instead of just
- producing a message and exiting. (interp.c)
- - The memory validator didn't validate chunks at previous save
- levels. (ilocate.c)
- - The Level 1 size of systemdict was too small. (iinit.c)
- - Attempting to define a Category resource in local VM gave a
- typecheck error rather than an invalidaccess. (gs_res.ps)
- - Building Level 1 systems was no longer possible. (zusparam.c)
-
- Rearranges the interpreter code slightly so that all operator invocations go
- through a single procedure when debugging. (interp.c)
-
- Adds a -K<numK> switch to limit the total amount of memory that Ghostscript
- can acquire. (imainarg.c)
-
- Makes the memory validator check packed refs more carefully. (ilocate.c)
-
- Makes the memory validator check explicitly for pointers to freed objects.
- (igc.c, ilocate.c)
-
- Makes the memory validator check dictionaries more carefully. (ilocate.c)
-
- Makes the memory validator check refs embedded in structures. (ilocate.c)
-
- Adds a debugging option that bypasses the garbage collector entirely.
- (igc.c)
-
- Adds debugging options to validate memory before/after save/restore.
- (zvmem.c)
-
- Removes the patch for the uniprint driver, since it is no longer needed.
- (gs_init.ps)
-
- Implements real-number operands in CFF fonts. (gs_cff.ps)
-
- Implements non-default charsets in CFF fonts. (gs_cff.ps)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - The PDF 1.2 "marked content" operators weren't defined.
- (pdf_main.ps)
- - Streams with binary data whose first character was an EOL (\n)
- didn't parse properly. Unfortunately, the way we fixed this may break some
- other files. (pdf_base.ps)
- - PDF 1.2 #nn escape syntax in names wasn't recognized. ****** This
- is implemented with an inefficient hack that should be moved down into C.
- However, I don't want to risk introducing new bugs during the beta test
- period. ****** (pdf_base.ps)
- - The interpreter had a limit of 64K objects. Removing this limit
- required changing a basic data structure -- admittedly a risky thing to do
- during beta test. (pdf_base.ps, pdf_main.ps)
- - TJ didn't multiply the offsets by the font size, causing incorrect
- character positioning. (gs_pdf.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The ASCIIHexDecode filter read an extra character in case of
- error. (sstring.c)
-
- Adds more tracing output to the CCITTFaxDecode stream. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - The allocator client name for rendering bitmap patterns was
- incorrect. (Only affects tracing output.) (gspcolor.c)
- - The check for exceeding the overall allocation limit was
- incorrect, because of unsigned arithmetic. (Only affects limitation of
- total allocation, which is only used for debugging and benchmarking.)
- (gsmemory.c)
- - The 0'th component of colored screens wasn't passed through the
- band list, possibly causing access errors when rasterizing. (gxclimag.c,
- gxclread.c)
- - setbbox could get an overflow without detecting it. (gsdps1.c)
- - Images with only one component but MultipleDataSources = true
- could cause a memory access error. (gximage.c)
- - The buffer for unpacking 12-bit-per-sample image data was too
- small, causing memory corruption. (gximage.c)
- - 12-bit-per-sample images with multiple data sources sometimes
- didn't pass correct pointers to image_data. (gsimage.c)
- - If an image data stream reached EOF before supplying enough data
- for the entire image, memory corruption could occur. (zpaint.c)
- - When a device halftone was freed, some pointers in the halftone
- cache weren't cleared, leading to possible dangling references. (gsstate.c)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (gxfont0.h, gsfont.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (gschar.c)
- - The (static) limit on the size of a command line argument was too
- small. (gsargs.h)
- - Building Level 1 systems was no longer possible. (gxdht.h,
- gsht.c, gsht1.c)
- - Truncation instead of rounding caused colors on gray-scale devices
- to come out very slightly too dark. (gxcmap.c)
- - The Decode mapping table constructed for images was slightly
- inaccurate for ranges other than [0 1] or [1 0]. (gximage.c)
-
- Version 4.71(limited) (3/31/97)
- =====================
-
- This is a bug fix release during the beta test period.
-
- Documentation
- -------------
-
- Fixes bugs:
- - A larger value of -Olimit is now needed to optimize gxclread.c.
- (make.txt)
- - Some comments were incorrect. (gdevbbox.h, sfilter1.c)
-
- Updates the GPL with a newer version from FSF. (COPYLEFT)
-
- Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1.
- (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some streams required by high-level drivers were incorrectly
- grouped with the interpreter rather than the library. (int.mak, lib.mak)
- - The choice of implementation for file streams was buried in an
- obscure place, rather than being included in the configuration definitions
- at the head of each makefile. (We believe there are no more such buried
- parameters.) This involved a NON-BACKWARD-COMPATIBLE change in the way this
- choice was specified. (lib.mak, *.mak)
- - Some dependencies were missing. (lib.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - A variable was used before being initialized, causing get_bits
- (and raster ops) to fail when using alternate X devices. (bug introduced in
- 4.70.) (gdevxalt.c)
- - Some 'private' declarations were omitted. (It is infuriating that
- gcc doesn't check for this!) (gdevps.c, gdevpx.c)
- - A few character strings were used as byte arrays without a cast.
- (gdevpx.c)
- - The EPS writer didn't write a correct bounding box, and didn't
- write it at the beginning of the file. (gdevvec.h, gsstruct.h, gdevps.c,
- gdevvec.c)
- - x_copy_color specified an incorrect (too large) image width.
- Apparently this only mattered because it could cause invalid memory
- accesses. (gdevx.c)
- - x_copy_mono also specified too large an image width. It's not
- clear this made any difference. (gdevx.c)
- - The default implementation of strip_copy_rop didn't clamp Y values
- to legal values for get_bits. (gdevmrop.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Some initialization files prematurely switched the interpreter
- into Level 2 mode, causing some Level 2 operators not to be defined. (bug
- introduced in 4.60 or later.) (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps,
- gs_init.ps, gs_res.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The choice of procedure names for the file-descriptor-based
- implementation of file streams was buried in a .c file, rather than being
- chosen in the makefile. (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c,
- sfxfd.c, sfxboth.c)
-
- Library
- -------
-
- Fixes bugs:
- - rcurveto was broken -- it drew curves to random points. (bug
- introduced in 4.61.) (gspath.c)
- - A trailing comma in an enum definition upset some compilers. (bug
- introduced in 4.70.) (gstype1.h)
- - Type 1 fonts with hint replacement could produce anomalous or
- clipped output, or even missing lines. (Also cleans up some out-of-date
- formatting.) (gxtype1.h, gstype1.c, gxhint2.c)
- - Removes some conditionals for choosing between old and new
- algorithms. (gxhint3.c)
- - makebitmappattern required that the bitmap consist of only a
- single tile repetition. (gspcolor.c)
- - Some computations on RasterOps didn't take transparency into
- account properly. (gdevmrop.c)
- - The structure definition for imager and graphics states had an
- incorrect offset for line_params, causing the garbage collector not to mark
- or relocate dash patterns, possibly causing memory faults, FPEs, or invalid
- output. (bug introduced since 4.03.) (gsstate.c)
- - 'show' operators gave a limitcheck for unreasonable coordinates,
- even if limit clamping was enabled. (gschar.c)
-
- Implements banded filling and stroking with colored halftones, in addition
- to pure colors and binary halftones. Since we are in a beta test period,
- actual use of this feature (but *not* all the code implementing it) is
- disabled under an #ifdef FUTURE. (gsdcolor.h, gxcldev.h, gxclpath.h,
- gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c)
-
- Version 4.70(limited) (3/26/97)
- =====================
-
- This fileset fixes the one outstanding compilation problem on PC platforms
- and the old problem of limitchecks for out-of-bounds coordinates, and adds a
- variety of new features, including the ability to save away the band lists
- for pages and rasterize them later and/or elsewhere in any order and
- combination. This is the first "serious beta" candidate for the next
- general release.
-
- Fileset numbers 4.62 through 4.69 were skipped deliberately.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The list of special -d and -s switches was out of date. (use.txt)
- - The name of the zlibDecode filter was incorrectly written
- zlibEncode. (language.txt)
-
- Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x.
- (make.txt)
-
- Documents a makefile patch required on NeXTStep. (make.txt)
-
- Documents how to patch gcc to fix the AXP code generation bug. (make.txt)
-
- Adds documentation for the new unified printer driver. (devices.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - 'make distclean' didn't remove a couple of files. (gs.mak)
- - A library module didn't include a necessary dependency. (lib.mak)
- - A new .ps file wasn't installed properly. (unix-end.mak)
- - File write dates weren't updated properly on PC platforms, causing
- unnecessary rebuilding. (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak,
- tccommon.mak, wccommon.mak, zlib.mak)
- - An unnecessary explicit compilation line for gdevcdj.c caused
- problems in the Mac environment. (devs.mak)
- - The VMS scripts were out of sync again. (vms.mak)
- - The VMS build scripts didn't include the new JPEG driver.
- (vms-*.mak)
- - A number of makefile macros were referenced before being defined.
- (devs.mak, lib.mak, int.mak, *.mak)
- - libpng.mak didn't work with PVERSION=90. (libpng.mak, zlib.mak)
-
- Separates install-scripts from install-exec and install-data.
- (unix-end.mak)
-
- Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles.
- (*.mak, iminst.h, iconf.c, imain.c)
-
- Adds a -dBATCH switch that causes Ghostscript to exit after processing the
- files named on the command line. (gs_init.ps)
-
- Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale
- JPEG drivers, to all Unix configurations. (ansihead.mak, cc-head.mak,
- gcc-head.mak)
-
- Drivers
- -------
-
- NOTE: because of a change in an internal interface (clist_output_page), the
- cp50 driver no longer works. This is a user-contributed driver for which we
- take no responsibility.
-
- Fixes bugs:
- - gdevcdj.c wasn't compatible with ansi2knr. (gdevcdj.c)
- - 'private' was omitted from some declarations. (gdevjpeg.c)
- - The PostScript writer didn't keep track of the current color
- properly. (gdevps.c)
- - RESOLUTION was misspelled in a header. (gdevbjc.h)
- - Some compilers objected to the use of a floating point initial
- resolution value. (gdevbjc.h)
- - Some compilers didn't allow static initialization of a union.
- (gsdcolor.h)
- - If a TIFF driver got an error when initializing the CCITTFax
- encoder, it returned a bogus error code. (gdevtfax.c)
- - The PDF writer produced incorrect output for Indexed color space
- images. (gdevpdfi.c)
- - For many fatal error conditions, the X driver called exit()
- instead of returning an error. (gdevx*.c)
-
- Adds new drivers:
- - epswrite, an EPS-writing driver (instead of making EPS output a
- parametric option of the PostScript-writing device). (devs.mak, gdevps.c)
- - pcxcmyk, a 4-bit CMYK PCX driver. This is probably only useful
- for debugging CMYK color rendering. (gdevpcx.c)
- - jpeggray, a JPEG driver that produces gray-scale rather than color
- output. Thanks to Tom Lane for contributing this. (gdevjpeg.c)
- - uniprint, a unified printer driver for a wide variety of inkjet
- printers. Thanks to Gunther Hess for contributing this. (gdevupd.c)
-
- Adds the resolution (pHYs) to the output of the PNG drivers. (gdevpng.c)
-
- Adds recognition of the ASCII85EncodePages parameter to the PostScript and
- EPS writers. (gdevps.c)
-
- Makes the new JPEG driver write a JFIF header, which contains the image
- resolution. (gdevjpeg.c)
-
- Changes the "vector" device support interface so relative movement can be
- detected easily. THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c)
-
- Changes the PostScript, EPS, and PDF writers to recognize curves and lines
- that can be represented more efficiently. (gdevpsdf.h, gdevpsdf.c,
- gdevps.c)
-
- Adds a new parameter to the PDF writer, FirstObjectNumber. This defines the
- first object number that will be used in the output. The default, and
- minimum, value is 1; the maximum value is approximately 2^31. This is for
- the benefit of dvipdf; we don't expect it to be used otherwise. In fact,
- using it appears to produce files that Adobe Acrobat Reader won't accept,
- even though the files are perfectly compliant with the published PDF
- specification. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
-
- Platforms
- ---------
-
- Removes the makefile for the 16-bit Borland C++ platform. This was the last
- supported 16-bit platform; we expect to gradually drop all 16-bit
- concessions from the code itself. (bcwin.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The initial size of systemdict was too small, causing the
- interpreter to slow down substantially. (iinit.c)
- - A library module depended on an interpreter module. (zcsindex.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (ifont.h)
-
- Moves set/currentoverprint to a more appropriate module. (zcolor2.c,
- zcssepr.c)
-
- Changes the default transfer functions so that they do something reasonable
- when given operands outside the legal [0..1] range. We only do this to work
- around a bug in FrameMaker output, which uses the transfer function as the
- screen function (!). (gs_init.ps)
-
- Changes the CMap construction algorithm to use the new, more compact
- representation. (zfcmap.c)
-
- Adds support for Adobe's Compact Font Format. Many individual features are
- not implemented yet: see the comment in the source code for details.
- (gs_cff.ps)
-
- Adds support for Type 2 charstrings in Type 1 fonts. (ifont.h, zfont1.c)
-
- Changes the Type 1 character rendering operator for the library change in
- Type 1 fonts. (zchar1.c, zfont1.c)
-
- Initializes the graphics state limit clamp flag to true. (zgstate.c)
-
- Temporarily adds a configuration file for the new unified printer driver,
- and arranges for it to be read at startup. This arrangement will be
- replaced very soon by a different one based on command line parameters.
- (gs_init.ps, uniprint.ps)
-
- Interpreter (PDF)
- -----------------
-
- Adds support for Compact Font Format fonts. (pdf_font.ps)
-
- Streams
- -------
-
- Adds a glue procedure needed for the new jpeggray driver. (sjpeg.h,
- sjpege.c)
-
- Removes the width limit of 32K in the CCITTFaxEncode filter. The new limit
- is absurdly large (about 50M). (scf.h, scfx.h, scfe.c)
-
- Library
- -------
-
- Fixes bugs:
- - A library module depended on an interpreter module. (gxcolor2.h,
- gscolor2.c)
- - When rendering a band, clipping was sometimes used when it wasn't
- necessary. (Performance only.) (gxclread.c)
- - Stroking didn't check the path against the device clipping box in
- the absence of an explicit (non-default) clipping path. (Performance only.)
- (gxstroke.c)
- - A reference to an opaque type upset a couple of compilers.
- (gxclread.c)
- - Negative 32-bit numbers in Type 1 fonts didn't work properly on
- 64-bit systems. (gstype1.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (gxbitmap.h)
- - A header wasn't protected against double inclusion. (gxclist.h)
- - Clipping devices didn't store their actual width and height.
- (gxcpath.c)
- - The slow-case check for thin lines was incorrect. (gxstroke.c)
- - Images didn't compute their clipping boxes correctly if there
- wasn't an explicit clipping path. (This must be a very recent bug, since it
- creates an overflow condition that prevents monochrome images from being
- rendered at all.) (gximage.c)
-
- Moves set/currentoverprint to a more appropriate module. For clients of
- gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the
- header file is now separate. (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c)
-
- Replace the MetroWerks work-around with a different, more general one.
- (gdevmem.h, gdevmem.c, gxdevice.h)
-
- Speeds up the Type 1 interpreter a little. (gstype1.c, gxhint3.c)
-
- Redesigns the internal representation of CMaps to be more space-efficient.
- (gxfcmap.h, gschar0.c, gsfcmap.c)
-
- Implements a facility for saving away pages and rendering them later.
- Currently this requires the pages to be represented as band lists on files,
- and only allows X translation when rendering. This involves adding the
- following new printer device parameters:
- BandHeight
- BandWidth
- BandBufferSpace
- Also changes the names of the printer device parameter elements from
- use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for
- consistency. (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h,
- gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c,
- gxclpath.c, gxclread.c)
-
- Changes the band list implementation API to allow closing a file without
- deleting it, and to allow reopening an existing file. This is a
- NON-BACKWARD-COMPATIBLE change to a deep internal interface. (gxclio.h,
- gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
-
- Speeds up rendering of colored halftones, by recognizing cases where one or
- more planes don't actually require screening, unrolling a loop, and doing
- basic clipping before halftoning. (gxcht.c)
-
- Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the
- handling of out-of-range coordinates to clamp them in a way that produces
- approximately the intended output most of the time, rather than causing a
- limitcheck. Currently this is only designed to work with the basic path
- construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it
- does not work with many other operations such as show, flattenpath or the
- rectangle operations. Note also that while currentpoint will return the
- correct (unclamped) value, reading out the path with pathforall will return
- clamped values. This involves NON-BACKWARD-COMPATIBLE changes to the path
- structure (but not to any public interfaces). (gxpath.h, gxtype1.h,
- gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c,
- gxpath.c, gxpath2.c, gxpcopy.c)
-
- Adds support for Type 2 charstrings. Some features are not implemented yet:
- see gstype2.c for details. (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h,
- gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
-
- Version 4.61(limited) (3/13/97)
- =====================
-
- This fileset cleans up many compiler warnings. It adds support for
- CMap-encoded fonts, and a driver that writes JPEG images.
-
- Documentation
- -------------
-
- Corrects an error in the description of the internal CodeMap structure.
- (gs_cmap.ps)
-
- Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP
- machines. (make.txt)
-
- Corrects the name of the .setglobal/.currentglobal procedures. (zvmem2.c)
-
- Updates current.txt in preparation for the release. (current.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The VMS script was out of date again. (vms.mak)
- - CIDFont support unnecessarily required composite font support.
- (int.mak)
- - CMap and CIDFont support had improper dependencies on
- initialization order. (lib.mak, int.mak)
- - Some dependencies were missing in the JPEG library code.
- (jpeg.mak)
-
- Adds the new JPEG driver to all standard configurations. (*.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - A dependency was omitted from the makefile. (devs.mak, gdevps.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (gdevpdfx.h, gdevbj10.c,
- gdevcdj.c, gdevpdfp.c, gdevstc.c)
-
- Adds a JPEG-writing driver. Currently this only produces RGB output and
- only has a QFactor parameter, but eventually it could take all the other
- parameters of the DCTEncode filter. (devs.mak, int.mak, lib.mak,
- gdevjpeg.c)
-
- Refactors the PDF and PostScript output drivers so that both of them
- understand all the relevant documented PDF distiller parameters. (The
- PostScript driver currently disregards nearly all of them.) (gdevpdfx.h,
- gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The MetroWerks C compiler gave an inexplicable error on a
- particular initialization. (gdevmem.h, gdevmem.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The insideness testing operators sometimes reported hits
- incorrectly. (zupath.c)
- - Mixed-type arithmetic used floats rather than doubles when
- converting integers, possibly leading to loss of precision. (zarith.c,
- zrelbit.c)
- - composefont was defined in a private dictionary, not in
- systemdict. (gs_cmap.ps)
- - composefont didn't work, for several different reasons.
- (gs_cmap.ps)
- - After a Type 1 font called an OtherSubr, an invalid memory access
- usually occurred, because of an incorrect attempt to free a data structure.
- (zchar1.c)
- - 2 .setlanguagelevel gave an error if globaldict hadn't been
- defined yet. (zmisc2.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code, or failure to check for
- (implausible) out-of-range data. (idict.c, idparam.c, igc.c, iinit.c,
- imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c)
-
- Adjusts clients for a change in the internal character cache structure and
- the introduction of the font next-glyph procedure. (zfont.c, zfont0.c)
-
- Refactors the Level 1 / Level 2 interpreter split slightly so that composite
- fonts don't require all of Level 2. (int.mak, gs_dps1.ps, gs_dps2.ps)
-
- Adds FMapType 9 (CMap-encoded) composite font support. (int.mak,
- gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c)
-
- Interpreter (PDF)
- -----------------
-
- Adds recognition of /Identity values for BG, UCR, and TR functions in
- ExtGState resources. (General function values still aren't recognized.)
- (pdf_draw.ps)
-
- Centralizes the handling of inherited attributes. (pdf_draw.ps,
- pdf_main.ps)
-
- Starts to add support for Type 0 fonts. (pdf_font.ps, pdf_main.ps)
-
- Streams
- -------
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (shc.h, scfd.c, sfilter2.c,
- siscale.c, stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - Some picky compilers disliked certain conditional expressions.
- (gxclread.c)
- - Some picky compilers couldn't handle an extraneous semicolon.
- (gdevvec.h)
- - A cast from byte ** to const byte ** was missing. (gdevvec.c)
- - Resizing the levels array of a halftone order when banding could
- cause invalid memory accesses. (bug introduced in 4.60) (gxclread.c)
- - One picky compiler didn't allow taking the address of an extern
- undefined structure. (lib.mak, gxclread.c)
- - When rendering Type 1 fonts, character overshoot was usually
- suppressed when it shouldn't have been, often producing "squashed"
- characters. (gxhint1.c)
- - On systems where sizeof(long) > sizeof(int), coordinate values of
- more than 22 bits were passed through the band list incorrectly, producing
- incorrect output. (gxclread.c)
-
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code or (hypothetical) loss of
- precision. (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c,
- gxclpath.c, gxclread.c, gxpdash.c)
-
- Makes using font hints conditional, for debugging. (gxhint1.c)
-
- Adds library-level support for FMapType 9 (CMap-encoded) composite fonts.
- There is still no support for rearranged fonts. (gsccode.h, gsfcmap.h,
- gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c,
- gsfcmap.c, gsfont.c, gsfont0.c)
-
- Splits band list control and utilities from rectangle-oriented commands,
- because a file was getting too big. (gxclist.c, gxclrect.c)
-
- Moves the temporary file names for command lists from the printer device
- structure to the command list structure; moves opening and closing the
- temporary files from gdev_prn_alloc/free to clist_open/close. (gdevprn.h,
- gxclist.h, gdevprn.c, gxclist.c, gxclread.c)
-
- Changes the command list storage implementation interface to pass the file
- name to the clist_rewind and clist_fseek functions, for the benefit of OSs
- that require closing and reopening a file to switch between reading and
- writing. This is a NON-BACKWARD-COMPATIBLE change in a non-public
- interface. (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
-
- Changes the get_outline procedure in Type 42 fonts to return the length of
- the outline data as well as the pointer. This is a NON-BACKWARD-COMPATIBLE
- change in a semi-public interface. (gxfont42.h, gstype42.c)
-
- Version 4.60(limited) (3/2/97)
- =====================
-
- This fileset moves color rendering up from the graphics state to the imager
- state so that color rendering can happen after banding. It also shifts
- image rendering to the rendering pass of banding for many common cases
- (often referred to inaccurately as "high-level image" capability). The
- changes involved are substantial and in some respects subtle, so
- unfortunately it is quite possible that some new bugs have been introduced.
-
- This fileset also includes improvements to the new PCL XL driver
- (pxlmono/color), and introduces an experimental PostScript driver (pswrite).
-
- Documentation
- -------------
-
- Fixes bugs:
- - The argument list of colorimage was incorrect. (zcolor1.c)
- - false .charboxpath incorrectly claimed to create the correct path
- even when the CTM was not well-behaved. (language.txt)
- - The discussion of the "main program" files was out of date.
- (make.txt)
-
- Updates the OS/2 EMX documentation. (make.txt)
-
- Modifies the Aladdin Ghostscript Free Public License slightly so it may be
- applied to other software packages. (PUBLIC)
-
- Updates inaccurate build documentation for several Unix platforms.
- (make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak)
-
- Notes a problem with the MIPSpro 7.1 compiler. (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Most makefiles didn't include version.mak. (msc.mak,
- msvcwint.mak, os2.mak, tctail.mak, wctail.mak)
- - There was an incorrect dependency for the Windows printer device.
- (devs.mak)
-
- Moves the PDF writer to devs.mak. (devs.mak, int.mak)
-
- Updates the main VMS script to be structured like version.mak. (vms.mak)
-
- Drivers
- -------
-
- Factors out the stream-writing procedures from the PDF writer, so they can
- be shared with the new PostScript writer. (gdevpdfs.h => gdevpstr.h,
- gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c => gdevpstr.c,
- gdevpdft.c, gdevpsdf.c)
-
- Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers.
- Currently this handles fill/stroke graphics and Level 1 images; everything
- else (including text) is turned into bitmaps. (devs.mak, gdevps.c)
-
- Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color.
- (devs.mak, gdevpx.c)
-
- Updates the "vector" device support interface. THIS IS STILL SUBJECT TO
- CHANGE WITHOUT NOTICE. (gdevvec.h, gdevpx.c, gdevvec.c)
-
- Makes the vgalib driver a page device. This seems bizarre, but it's
- necessary for setpagedevice to work with it. (gdevvglb.c)
-
- Updates some drivers for the new color mapping interfaces. (gdevpx.c)
-
- Updates the user-contributed Canon LBP-8II and LIPS III driver.
- (gdevlbp8.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The workaround for Ultrix's incorrect implementation of sh -e
- still didn't work. (unixtail.mak)
- - The definition of offset_of didn't work on the Mac. (stdpre.h)
-
- Updates the OS/2 EMX linker command per input from a user. (os2.mak)
-
- Fonts
- -----
-
- Adds .pss (apparently used by Adobe for Multiple Master font instances) to
- the list of extensions skipped by the GS_FONTPATH directory scanner.
- (gs_fonts.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Programs that rebind null, true, and/or false could cause all
- kinds of problems. We've only fixed a couple of the places that might be
- affected (findfont, quit), by wrapping an explicit "systemdict begin/end"
- around the code; fixing this completely would probably require wrapping this
- implicitly around almost every pseudo-operator, which would be too
- expensive. (gs_fonts.ps, gs_lev2.ps)
- - In a Level 2 system, grestoreall stopped one level too early.
- (zdevice2.c)
- - setpagedevice didn't restore the stack properly if it got an
- error. (gs_setpd.ps)
-
- Changes the GC pointer enumeration interface to reduce the number of
- 'discarding const' warnings. See under Library below. (igc.c)
-
- Updates the interpreter for the change in the imager / graphics state split.
- (zpcolor.c)
-
- Makes the stack-restoring behavior of pseudo-operators non-optional.
- (interp.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
- position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - A header file wasn't protected against double inclusion.
- (stream.h)
- - any_abs was redefined. (spngp.c)
- - The CCITTFaxDecode filter didn't fully initialize the "previous
- line" for 2-D decoding, so if the very first line of data was 2-D, an
- out-of-bounds memory access could occur. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - gs_image_next could read too much data, causing errors at the
- interpreter level. (gsimage.c)
- - The bitmaps stored in the Pattern cache were usually freed,
- leaving dangling pointers. (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c,
- gxpcmap.c)
- - There was still one assignment to a const structure, and there
- were some unnecessary const-discarding casts. (gxclread.c)
- - If a character in a Type 3 font was defined by executing 'show'
- type commands, charpath did the wrong thing (didn't pick up the paths
- created by the inner show). Similarly, if it uses 'stroke', true charpath
- did the wrong thing (appended the path rather than the strokepath path).
- (gxchar.h, gschar.c, gspaint.c)
- - A header file wasn't protected against double inclusion.
- (gserror.h)
- - The new fast implementation of rectfill didn't handle rectangles
- with negative width/height. (bug introduced in 4.32) (gsdps1.c)
- - Reading banded high-level images calculated the image height
- incorrectly, (usually) causing a rangecheck. (gxclread.c)
- - When reading band data, a memory fault could occur if the halftone
- cache hadn't been allocated yet. (gxht.c)
- - The imager state data for high-level images wasn't written soon
- enough. (gxclimag.c)
- - High-level images computed bounding boxes incorrectly, so they
- could write some garbage data in the band list, and could also fail to write
- some information. (gsmatrix.h, gxmatrix.h, gxclimag.c)
- - High-level images wrote the raster value incorrectly in the band
- list. (gxclimag.c)
- - Images with non-zero initial source X and non-portrait orientation
- were displaced on the page. (In practice, this only applied to some banded
- high-level images.) (gximage.c)
- - The bounding box device didn't forward output_page calls, causing
- pages to be dropped or overprinted. (gdevbbox.c)
- - The band renderer considered all non-zero return codes as errors,
- rather than only negative codes. (gxclread.c)
- - An unnecessary extern hadn't been removed. (gxclimag.c)
- - Some macros didn't parenthesize uses of their arguments, causing
- syntax errors. (gsrefct.h)
- - The screen phase and color_info weren't set correctly when
- rendering bands. (gsstate.h, gsht.c, gxclread.c)
- - A header file didn't declare all the opaque types it used.
- (gsdevice.h)
- - Indexed color spaces didn't work with banded images. (They still
- don't -- the check for writing the color space, and the code for reading the
- table or map, are incomplete.) (gxclist.h, gxclpath.h, gxclimag.c,
- gxclpath.c, gxclread.c)
-
- In preparation for implementing post-banding halftoning:
-
- - Moves color rendering information, including alpha value, from
- graphics state to imager state; also moves the allocator pointer. This is
- quite a subtle change, and may have a significant bug tail. (gxdcolor.h,
- gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c,
- gxclread.c)
-
- - Changes all the relevant color space and color mapping procedures
- so they take a const gs_imager_state * (and, in some cases, a [const]
- gx_device *) instead of a const gs_state *. This is a
- non-backward-compatible change, but it only affects internal interfaces.
- (gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h,
- gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c,
- gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c,
- gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c)
-
- - Changes the color and color space reference count adjustment
- procedures similarly, to take a gs_memory_t * instead of a gs_state_t *.
- (gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c)
-
- - Changes the gs_halftone in the graphics state from being part of
- the gs_state_contents to being an independent reference-counted object.
- This too may have a significant bug tail. (gxht.h, gxistate.h, gsht.c,
- gsstate.c)
-
- - Changes the image processing code so it no longer assumes that the
- gs_imager_state is actually a gs_state. (gximage.h, gximage.c, gximage2.c,
- gximage3.c, gximage4.c, gximage5.c)
-
- - Adds a unique ID value to device halftones, so that it's possible
- to detect (non-)changes quickly. (gxdht.h, gsht.c)
-
- Finishes the code for writing and reading color rendering information in the
- band list. This involves changes to several band list opcodes. (gsht.h,
- gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c,
- gxclbits.c, gxclimag.c, gxclist.c, gxclread.c)
-
- Changes the garbage collector pointer enumeration procedure interface
- slightly to reduce the number of 'discarding const' warnings. THIS IS A
- NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the
- ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which
- should be no one). (gsstruct.h, gsmemory.c)
-
- Corrects a few more needlessly const-discarding casts. (gxfcache.h,
- gxccache.c)
-
- Checks for file reading errors when rasterizing bands. (gxclread.c)
-
- Version 4.51(limited) (2/9/97)
- =====================
-
- This version contains a more reasonable high-level PCL XL driver. The VMS
- build script is working again, we think.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The gsdll_h macro wasn't defined all the places it was needed.
- (devs.mak, os2.mak)
-
- Drivers
- -------
-
- Continues to develop the "vector" driver infrastructure and the PCL XL
- driver. EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevvec.c)
-
- Brings the PCL XL driver up to usable quality for graphics. Most
- fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits
- per pixel, are converted directly to their PCL XL equivalents. Text is
- still treated as bitmaps. Both gray-scale and color output are now
- supported. (devs.mak, gdevpx.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - When using gsos2.exe with gsdll2.dll, reducing the size of the
- page bitmap caused a limitcheck error with the message
- Failed to decommit memory in pm_alloc_bitmap, rc = 87 (gdevpm.c)
- - The scripts that construct gconfig_.h failed on Ultrix, because
- Ultrix's implementation of sh -e is incorrect. (unixtail.mak, ugcclib.mak)
- - Some systems that have sys/times.h don't define CLK_TCK, making a
- compilation fail. (time_.h)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - An omitted semicolon wasn't detected by gcc. (idict.c)
-
- Removes a source of unnecessary duplication by getting the revision number
- and date from version.mak. (gs.mak, int.mak, version.mak, gscdef.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The minimum buffer sizes for the RunLengthDecode filter hadn't
- been changed to reflect the algorithm improvement made in release 4.38.
- (srld.c)
-
- Changes the RunLengthEncode filter so it can make progress with only a
- 2-byte output buffer. (srlx.h, srle.c)
-
- Library
- -------
-
- Fixes bugs:
- - Because of a typo, the slow general algorithm was always used for
- monochrome images. (Performance bug only, but a serious one.) (gximage2.c)
- - Dots (zero-length lines with round caps and zero dot length)
- caused an infinite loop. (bug introduced in 4.40) (gxstroke.c)
- - Some image data unpacking procedures were always required, but
- weren't always included. (bug introduced in 4.50) (gximage.c, gximage0.c,
- gximage3.c)
- - Images with 8 bits per pixel and non-identity Decode produced
- garbage. (bug introduced later than 4.03) (gximage0.c)
- - Some necessary casts and omitted punctuation weren't detected by
- gcc. (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c)
- - The band list became confused if a band had no commands at all.
- (gxclread.c)
- - If a path included a closepath followed by a moveto to the same
- point, it could be written incorrectly in the band list. (bug probably
- introduced in 3.60) (gxclpath.c)
-
- Changes some internal computations for arcs from float to double for greater
- accuracy. (gspath1.c)
-
- Version 4.50(limited) (1/31/97)
- =====================
-
- This release contains an experimental high-level PCL XL driver, a little
- more support for CID/CMap fonts, and the usual bug fixes. NOTE: the VMS
- build script is known to be out of sync with the makefiles again; we still
- don't see any alternative to constant struggles with this problem.
-
- Documentation
- -------------
-
- Corrects the -h message, which gave an incorrect file name for the bug
- report form. (imainarg.c)
-
- Removes documentation for 16-bit MS-DOS platforms with the Borland compiler.
- (fonts.txt, make.txt, new-user.txt, use.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Watcom library makefile didn't define the directory
- information for libpng and zlib. (watclib.mak)
-
- Moves the selection of band list implementation (file- vs. RAM-based) and
- the compression filter for RAM-based band lists up to the top-level
- makefiles. Again, this is a NON-BACKWARD-COMPATIBLE procedure change.
- (lib.mak, *.mak)
-
- Moves the selection of version number for all platforms (except VMS, as
- usual) to a separate file. This will reduce the number of files that need
- editing when the version number changes. (ansihead.mak, cc-head.mak,
- gcc-head.mak, ugcclib.mak, version.mak, tar_cat)
-
- Drivers
- -------
-
- Fixes bugs:
- - An error in the (unsupported) SGI RGB driver could cause crashes
- or incorrect output. (gdevsgi.c)
-
- Starts to create a framework for structured output ("vector") drivers (PDF,
- PostScript, PCL XL, etc.) (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h,
- gxdevice.h, gdevvec.c)
-
- Moves default page size parameters to a more accessible header. (gdevprn.h,
- gxdevice.h, gdevx.c)
-
- Adds a driver that produces properly structured PCL XL output. This is
- highly experimental and not ready for use yet. (gdevpx.c)
-
- Platforms
- ---------
-
- Removes support for 16-bit MS-DOS platforms with the Borland compiler. For
- the moment, 16-bit MS Windows is still supported. (bc.mak, bcflags.mak,
- bclib.mak, tc.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - File-based CIDFonts (with delayed, incremental loading of
- character outlines) didn't work. (gs_cidfn.ps)
-
- Finishes implementing the definition of CMap resources, except for
- rearranged fonts. (gs_cidfn.ps, gs_cmap.ps)
-
- Adds a little more CMap support code. (zcid.c)
-
- Removes the .setcurrentfile operator, since it doesn't solve the problem it
- was intended to address. (zcontrol.c)
-
- Adapts the interpreter to use the new argument processing code.
- (imainarg.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxDecode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (This is essentially
- the same bug that was fixed for the CCITTFaxEncode filter in 4.38.)
- (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - Painting an image without having set up any halftone could cause a
- crash. (gxht.c)
- - In a very obscure case, an occasional scan line of landscape
- images could get corrupted. (gximage0.c)
- - Because of a rounding error, patterns could fail to be painted in
- certain cases. (gxpcolor.h, gspcolor.c, gxpcmap.c)
- - Very large line widths or miter limits could cause the computation
- of stroke expansion to overflow. (gxpaint.h, gdevbbox.c, gxclpath.c,
- gxstroke.c)
- - The phase could be incorrect for simple patterns. (gspcolor.c)
- - The default implementation of copy_mono used an incorrect
- RasterOp. (gdevdflt.c)
- - The default implementation of fill_masked didn't increment the row
- pointer, causing characters to appear as solid rectangular blocks.
- (gxdcolor.c)
-
- Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if
- the path was null. (gsdps1.c)
-
- Adds a limit on the amount of space that the default (C heap) allocator will
- allocate, and a record of the maximum amount allocated, to help testing
- embedded products. (gsmemory.c)
-
- Changes the band list algorithm for deciding how many replicas of a halftone
- tile to store in the tile cache. The previous algorithm was too liberal,
- which could cause the cache to overflow and many unnecessary bitmaps to be
- written in the band list. (gxclbits.c)
-
- Writes clipping with a rectangle more compactly in the band list.
- (gxfixed.h, gxclpath.c)
-
- Adds new band list commands for representing 90- and 180-degree arcs
- compactly. (gxclpath.h, gxclpath.c, gxclread.c)
-
- Repackages handling of general monochrome images, color images, and 12-bit
- and interpolated images, so that they are included optionally rather than in
- all configurations. (int.mak, lib.mak, gximage.h, gximage.c,
- gximage[12345].c)
-
- Changes the structure definition for devices to include no-op pointer
- enumeration and relocation, so they can have subclasses. (gxdevice.h)
-
- Adds a library facility for processing command line arguments with
- @-expansion. (gsargs.h, gsargs.c)
-
- Version 4.41(private) (1/21/97)
- =====================
-
- This release adds a PCL XL output driver, and a few performance
- improvements.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The zlib library used an incorrect header file when compiling.
- (zlib.mak)
-
- Changes the names of the preprocessor symbols indicating the presence of
- system header files to be consistent with the ones used by GNU configure.
- (dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h;
- gp_unix.c)
-
- Changes the method for choosing the compression filter for RAM-based band
- lists. This is a NON-BACKWARD-COMPATIBLE change in the makefile. (lib.mak)
-
- Drivers
- -------
-
- Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet
- 5 and 6 family. This driver is extremely simple and just emits bitmaps;
- future drivers will use more PCL XL high-level constructs. (gdevlj56.c)
-
- Fonts
- -----
-
- Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - gs -h and -v returned with a non-zero exit code on all platforms.
- (This is necessary under Windows, to keep the message visible on the screen,
- but nowhere else.) (imainarg.c)
- - Resizing a dictionary could exceed dict_max_size, causing memory
- corruption. (dstack.h, idict.h, idict.c, zdict.c)
-
- Adds .setlinecap and .setlinejoin that can use the extended range of line
- cap/join values, and redefines setlinecap and setlinejoin in terms of them.
- (gs_init.ps, zgstate.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxDecode filter with EncodedByteAlign = true skipped to
- a byte boundary before checking for an EOL. This may be wrong if EndOfLine
- = true; we aren't at all sure what should happen if EndOfLine = false.
- (scfd.c)
-
- Adds a "no wrapper" option to the zlib streams, to optionally suppress the
- time-consuming integrity checksum computation. (szlibx.h, szlibc.c,
- szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - Dashed lines with zero-length drawn segments (dots) that fell
- exactly on a corner produced inappropriate output. (pcl/test19.pxs)
- (gxpdash.c, gxstroke.c)
- - Dashed lines didn't set the segment notes properly. (gxpdash.c)
- - The bounding box device didn't free a bookkeeping structure at the
- end of processing an image. (gdevbbox.c)
- - Curve points could get computed incorrectly when using emulated
- floating point. (gxpcopy.c)
- - The 1-element cache for curve_x_at_y didn't work if Y was
- decreasing. (gxfixed.h, gxpcopy.c)
-
- Distinguishes between error and informational exits. (stdpre.h)
-
- Defines and checks maximum values for line cap and join parameters.
- (gslparam.h, gsline.c)
-
- Removes the 'not last' segment note, since it is not used for anything.
- (gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c)
-
- Changes the memory freeing algorithm for RAM-based band lists back to the
- original one, since the "improved" one had more bugs than it was worth
- chasing. (gxclmem.c)
-
- Speeds up the A * B / C algorithm a little. (gsmisc.c)
-
- Speeds up curve_x_at_y by recognizing more cases that don't require the slow
- A * B / C algorithm. (gxpcopy.c)
-
- Changes the path filling code so it uses fill-by-trapezoids even if
- fill_adjust is zero, as long as the flatness is at least 1 pixel.
- (gxfill.c)
-
- Removes the (unneeded) floating point operations from gx_curve_log2_samples.
- (gxpflat.c)
-
- Changes the memory-based implementation of band lists so that it constructs
- the compressor and decompressor by calling procedures rather than
- instantiating templates: this allows setting filter parameters to
- non-default values. (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c)
-
- Version 4.40(private) (1/13/97)
- =====================
-
- This version finally handles the last graphics model discrepancies between
- PostScript and PCL, by correctly implementing null joins, minimum dot
- lengths, and tangent-aligned curve ends. It also contains some significant
- performance improvements, and as usual a few bug fixes.
-
- Documentation
- -------------
-
- Documents the new accurate curves and path dashing operators.
- (language.txt)
-
- Utilities
- ---------
-
- Adds switches for genconf to set and unset a prefix for file names.
- (genconf.c)
-
- Drivers
- -------
-
- Adds recognition of the new Distiller 3.0 parameters to the PDF writer.
- (None of them have any effect yet.) (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c,
- gdevpdfp.c)
-
- Converts all the output functions in the PDF writer from being file-based to
- using streams, in anticipation of adding compression. (gdevpdfs.h,
- gdevpdfx.h, gdevpdf*.c, gdevpdfs.c)
-
- Interpreter
- -----------
-
- Adds operators for accessing the new accurate curves flag in the graphics
- state. (zgstate.c)
-
- Adds an operator for invoking gs_dashpath. (zpath1.c)
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - Indexed color spaces whose base space was a CIE space caused an
- error. (pdf_draw.ps)
-
- Library
- -------
-
- Fixes bugs:
- - A pointer was declared const incorrectly. (gxcpath.c)
- - Filling with a pattern often failed to pass a non-null bitmap ID,
- causing excessive writing in the band list. (Performance bug only.)
- (gspcolor.c)
- - The bounding box device didn't discount copy_mono or draw_line
- operations drawing in white. (gdevbbox.c)
- - The bounding box device didn't read out the bounding box correctly
- as the PageBoundingBox device parameter. (It did return it correctly
- through the gx_device_bbox_bbox procedure.) (gdevbbox.c)
- - The default implementation of fill_triangle drew nothing or
- incorrect output if the corners of the triangle were specified in certain
- orders (ax < 0 or bx < 0) (i.e., the previous "fix" had a bug).
- (gdevddrw.c)
-
- Changes tile size from always being set in all bands to being 'known' by
- bands individually. (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c)
-
- Computes an additional value in advance when rendering images. (gximage.h,
- gximage1.c, gximage2.c)
-
- Replaces some slow loops with calls of memmove. (gxclmem.c)
-
- Provides a fixed-point implementation of A * B / C for machines with slow
- floating point. (gxfixed.h, gsmisc.c)
-
- Extends the "device color" type to implement filling masked regions as well
- as rectangles. (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c,
- gxht.c)
-
- Makes unclipped monobit portrait and landscape images and image masks use
- the new masked fill capability of device colors. (gximage.h, gximage.c,
- gximage1.c, gximage2.c)
-
- Adds a macro for determining pointer alignment. (stdpre.h, gdevdflt.c)
-
- When floating point is slow, uses a different, faster algorithm for
- gx_curve_x_at_y. (gxpcopy.c)
-
- Improves performance by adding a one-element cache for gx_curve_x_at_y.
- (gzpath.h, gxpcopy.c)
-
- Reduces overhead when banded images are pre-rasterized (currently, always).
- (gxclimag.c)
-
- Adds a rendering cost estimate field to each band in a band list. This
- field isn't actually used for anything yet; eventually, the intent is that
- bands with a high cost will get rendered, and stored in compressed form,
- before starting the engine. (gxclist.h)
-
- Adds the concept of 'notes' for path segments, to allow remember what
- segments constitute a single curve or arc. Currently we set these properly
- for everything except dashed paths. (gxclpath.h, gxpath.h, gzpath.h,
- gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c)
-
- When the dot length is non-zero, changes curve stroking to always use bevel
- joins within each curve rather than the current join. This prevents a
- "bristly" look with no join and butt caps. (gxstroke.c)
-
- Adds an "accurate curves" capability that makes the last line segment of a
- flattened curve actually be tangent to the curve, which in turn makes
- flat-end caps be correctly perpendicular to the tangent. (gxpath.h,
- gxpcopy.c)
-
- Adds an "accurate curves" flag in the graphics state. (gsline.h,
- gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c,
- gxclread.c, gxfill.c, gxstroke.c)
-
- Changes the meaning of "no join" (gs_join_none) so that instead of producing
- no join and butt caps, it produces whatever the current cap is. This is
- compatible with the H-P definition. (gxstroke.c)
-
- Implements non-zero dot length for dash patterns. (gxpdash.c)
-
- Splits off the curve flattening algorithms into a separate file.
- (gxpcopy.c, gxpflat.c)
-
- Version 4.39(limited) (1/1/97)
- =====================
-
- This version was created only to accompany a release of the PCL XL
- interpreter. It was withdrawn the day after it was released, because the
- tools used to produce it put the wrong files in the filesets.
-
- Documentation
- -------------
-
- Adds a more detailed description of the third-party ps_view viewer
- interface. (new-user.txt)
-
- Corrects an error in a reference to the PSLRM. (lib.txt)
-
- Documents the change in .makeoperator. (language.txt)
-
- Updates the FTP location of the zlib sources. (zlib.mak)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Unix library makefile didn't include the necessary definitions
- for libpng and zlib. (ugcclib.mak)
-
- Allows selecting the compression filters for memory-based band lists in the
- makefile. Makes zlib (deflate) the default compressor for memory-based band
- lists. (lib.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - prfont.ps wouldn't print unencoded characters in Type 42 fonts.
- (prfont.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - The H-P monochrome driver didn't put out enough initialization
- commands at the beginning of each page to make each page printable
- independently. (gdevdjet.c)
-
- Interpreter
- -----------
-
- Changes ref_stack_count_inline so it never does a procedure call.
- (istack.h)
-
- Changes .makeoperator so that operator procedures save the stack depths, and
- restore the stack pointers (if possible) if the operator encounters an
- error. This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the
- 'stop' and 'stopped' pseudo-operators (and, if there were any, any other
- pseudo-operators that interact with the error handling machinery) in C.
- (gs_init.ps, interp.c, zcontrol.c)
-
- Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a
- page device dictionary, per the Adobe supplement for their version 2017
- interpreter. This involves a NON-BACKWARD-COMPATIBLE change to the
- (undocumented) .matchpagesize operator. (gs_setpd.ps, zmedia2.c)
-
- Makes necessary changes for compatibility with the added parameters for the
- zlib filters. (zfzlib.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The zlib encoder returned EOFC when it should have returned 0.
- (szlibe.c)
-
- Adds optional parameters and reset procedures for the zlib filters.
- (szlibx.h, szlibc.c, szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - Displaying characters with a non-standard RasterOp could cause an
- invalid memory access. (gdevdflt.c)
- - Banding sometimes used an incorrect RasterOp. (gxclread.c)
- - When banding, mixing Patterns and halftones could confuse the
- bookkeeping of tile size, leading to incorrect generation of the band list
- and error messages or confusion when rasterizing. (gxclist.h, gxclbits.c,
- gxclread.c)
- - If only the dash pattern offset changed, and not any of the other
- dash-related parameters, the new offset wasn't written in the band list,
- causing incorrect output. (gxclpath.c)
- - Oversized halftone tiles didn't report their error code properly.
- (gxclbits.c)
- - Oversized halftone tiles with RasterOp caused an error.
- (gxclist.c)
- - When banding, RasterOp transfers that crossed a band boundary
- didn't access the correct source data on bands other than the first.
- (gxclist.c)
- - There were redundant copies of the code for writing a RasterOp
- value in the band list. (gxclimag.c, gxclpath.c)
- - Oversized patterns or halftones produced garbled output.
- (gxclbits.c)
- - The check for oversized patterns or halftones was slightly
- incorrect, leading to the possibility of writing out a tile that would
- overflow the reading buffer and corrupt memory. (gxclbits.c)
- - When banding, RasterOp wasn't applied to fill and stroke
- operations, and wasn't applied correctly to characters. (gdevdflt.c,
- gxclimag.c, gxclread.c)
- - The RasterOp-related optimizations for black-and-white images
- sometimes produced incorrect output. (gximage.c, gximage2.c)
- - The default implementation of fill_triangle didn't draw anything
- if the corners of the triangle were specified in certain orders (ax < 0 or
- bx < 0). (gdevddrw.c)
- - Painting with a Pattern could pass out-of-range phase values to
- driver procedures. (gspcolor.c)
- - Because of an off-by-1 error, halftones or patterns passed through
- the band list could write past the end of their allocated space in the band
- tile cache, leading to incorrect output or possible arithmetic exceptions or
- memory access errors. (gsbitops.c)
-
- Adds -Z: for printing only the minimal command list statistics. (gxclist.c,
- gxclread.c)
-
- Expands band list tracing so it includes all of the data associated with the
- command, not just the command name and a few command parameters.
- (gxclread.c)
-
- Adds free lists for strings. Currently these are only used in
- non-garbage-collected environments. (gxalloc.h, gsalloc.c, gsnogc.c)
-
- Adds a procedure for copying a path structure, and an (internal) accessor
- for the current path in the graphics state. (gxpath.h, gspath.c, gxpath.c)
-
- Speeds up filling characters with halftones a little bit. (gdevdflt.c)
-
- Changes the memory-based implementation of band lists so it can use any
- compression / decompression filter, so it only compresses when it has
- allocated a specified amount of buffer storage, and so it releases its
- buffer storage at the end of each page. (gxclmem.h, gxclmem.c)
-
- Speeds up counting the number of 1-bits in a byte, which is used in some
- image processing algorithms. (gsbittab.h, gsbittab.c)
-
- Reduces the band list space required for changing tile size. (gxcldev.h,
- gxclbits.c, gxclread.c)
-
- Version 4.38(limited) (12/20/96)
- =====================
-
- Adds support for a couple of undocumented features in Type 1 fonts.
-
- Interpreter
- -----------
-
- Adds handling of the Type 1 font subroutineNumberBias (an optional entry in
- the Private dictionary) and lenIV = -1 features at the interpreter level.
- (zchar1.c, zfont1.c)
-
- Streams
- -------
-
- Fixes bugs:
- - The CCITTFaxEncode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (scfe.c)
-
- Changes the RunLengthDecode filter so it can make progress (produce output)
- with only a 1-byte output buffer. (srlx.h, srld.c)
-
- Library
- -------
-
- Fixes bugs:
- - The sine and cosine of multiples of 90 degrees weren't exact.
- (gxfarith.h, gsmisc.c)
- - The expanded bounding box computation for strokes didn't take into
- account the possibility of overflow. (gxstroke.c)
- - The allocator didn't fill freed strings with the 'free' mark.
- (gsalloc.c)
- - When using a pattern with RasterOp, the phase was computed
- incorrectly, leading to anomalous filling patterns. (gspcolor.c)
- - Patterns with a non-zero translation in the matrix passed to
- makepattern didn't translate the pattern origin properly. (gxcolor2.h,
- gxpcolor.h, gspcolor.c)
-
- Adds a subroutineNumberBias field to Type 1 fonts. This is an undocumented
- feature of the Type 1 font format. (gxfont1.h, gstype1.c)
-
- Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are
- unencrypted. This too is an undocumented feature of the Type 1 format.
- (gxfont1.h, gxtype1.h, gstype1.c, gstype2.c)
-
- Changes gs_clippath so it returns more reasonable outlines. (There are too
- many programs that rely on being able to stroke the result of clippath, even
- though both the Adobe and H-P literature specifically say the results are
- unpredictable.) (gxcpath.h, gxcpath.c)
-
- Version 4.37(limited) (12/10/96)
- =====================
-
- This version implements separate halftone phase for source and texture,
- required for PCL XL implementation.
-
- Fonts
- -----
-
- Fixes bugs:
- - Loading a native TrueType font without a 'post' table caused an
- error. (gs_ttf.ps)
-
- Interpreter
- -----------
-
- Extends the interpreter to handle the new separate halftone phases for the
- RasterOp source and texture. (gs_dps1.ps, zdps1.c)
-
- Makes a small change to accommodate a library change supporting Type 2
- charstrings. (zfont1.c)
-
- Interpreter (PDF)
- -----------------
-
- Implements the FontFile2 key for embedded TrueType fonts. (pdf_font.ps)
-
- Starts to implement the FontFile3 key for compressed Type 1 fonts. This
- code is currently disabled, because none of the necessary underlying C is
- written yet. (pdf_font.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The floating point emulator often returned incorrect results (too
- many bugs to list). (This is not used in any standard configuration.)
- (gsfemu.c)
- - The new copy_for procedure for gstates incorrectly declared an
- argument as const. (gxstate.h, gsstate.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points could still be returned in the wrong order,
- possibly causing curved edges to turn into straight lines, and the algorithm
- still produced the wrong results if the curve had to be split twice along a
- single axis. This is the second time we have "fixed" these problems and the
- 4th time we have "fixed" the curve monotonizing algorithm. (gxpcopy.c)
- - Setting halftones cause a memory leak, because the subsidiary
- objects of the device halftone weren't freed properly. Fixing this required
- changing the graphics state implementation from allocating a device halftone
- for each gstate to managing the device halftone with reference counting.
- (gxdht.h, gzstate.h, gsht.c, gsstate.c)
-
- Provides an optimized version of ldexp for FPU-less configurations, and
- changes one key algorithm to use it. (gxfixed.h, gsmisc.c, gxpcopy.c)
-
- Speeds up imagemask with a halftone a little. (This will eventually require
- more serious optimization.) (gximage2.c)
-
- Adds a -Z* switch for tracing varieties of image rendering. (gximage.c)
-
- Recognizes that if the logical operation is equivalent to D = S (after
- accounting for a constant texture, if any), or if it is equivalent to D = ~S
- or D = D {&,|}{S,~S} and D and S are both monobit and both colors are pure,
- imaging with RasterOp can be executed without invoking RasterOp. (gsropt.h,
- gximage.c)
-
- Makes coordinate transformations with landscape matrices execute as fast as
- with portrait matrices. (gxmatrix.h, gscoord.c, gsmatrix.c)
-
- Adds some sketch code for interpreting Type 2 charstrings. It compiles, but
- it makes no pretense of being runnable. (gstype1.h, gxop1.h, gxtype1.h,
- gstype2.h, gxfont1.h, gstype1.c, gstype2.c)
-
- Extends the library to allow setting separate halftone phases for the
- RasterOp source and texture, which is needed to implement halftone screens
- that behave like those in H-P's PCL XL printers. (gscsel.h, gsstate.h,
- gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h,
- gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c,
- gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE
- BANDING CODE, grep FOR phase ******
-
- Removes the rc_header member from the gs_halftone structure, since we don't
- need it after all. (gxht.h)
-
- Version 4.36(limited) (12/3/96)
- =====================
-
- This version fixes a number of library bugs related to RasterOp, Patterns,
- and memory management.
-
- Documentation
- -------------
-
- Changes the definition of texture transparency to match the peculiar H-P
- specification. (drivers.txt, language.txt)
-
- Drivers
- -------
-
- Fixes bugs:
- - x_get_bits didn't flush updates to the frame buffer, leading to
- possibly incorrect data being returned. (gdevx.c)
- - x_get_bits added padding to the scan line being copied, possibly
- corrupting memory. (gdevx.c)
-
- Changes the x11mono driver to define white = 0, black = 1 to more closely
- model black-and-white printers. (This is an internal change that doesn't
- affect the output.) (gdevxalt.c)
-
- Interpreter
- -----------
-
- Removes some code that is no longer needed, by virtue of the fix for the
- memory leak in Pattern remapping. (zpcolor.c)
-
- Library
- -------
-
- Fixes bugs:
- - Patterns wider than 1024 bits caused a rangecheck. (gxclip2.h,
- gxclip2.c)
- - Dash patterns never got freed. The fix for this slows down gsave
- and grestore slightly, but we don't see any way around it. (gsline.c,
- gsstate.c)
- - If the CTM was very non-uniform in X and Y, stroke sometimes
- didn't recognize thin lines as being thin, leading to dropouts.
- (gxstroke.c)
- - RasterOps that didn't use S or T still took S or T transparency
- into account. (gdevmrop.c)
- - RasterOps with no source didn't handle the possibility that the
- device color for black might have a value other than 0. (gxdcolor.h,
- gspcolor.c, gxcht.c, gxdcolor.c, gxht.c)
- - White pixels in halftones on black-and-white devices apparently
- are *not* supposed to be treated as opaque for RasterOp. (gxcht.c, gxht.c)
- - clippath caused memory to be lost until a restore or a garbage
- collection. (gspath.c)
- - Clipping lists weren't ever freed, and clipping paths sometimes
- weren't freed, causing memory to be lost until a restore or a garbage
- collection. (gzacpath.h, gxacpath.c, gxcpath.c)
- - Freeing a pattern instance referenced a pointer after it had been
- freed, causing an invalid memory access. (gspcolor.c)
- - Remapping a Pattern color lost track of the temporary gstate,
- memory devices, and possibly the mask, causing memory to be lost until a
- restore or GC. (gxpcolor.h, gxpcmap.c)
- - Remapping a Pattern color could cause paths to be marked as
- shared, preventing them from being freed until a restore or GC. (gxpcmap.c)
-
- Enhances the non-tracing garbage collector so that if there are no strings
- allocated at all, it resets the string allocation pointers. (gsnogc.c)
-
- Optimizes the black-and-white RasterOp implementation by recognizing cases
- that can be implemented directly by fill_rectangle, copy_mono, or
- tile_rectangle. (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c)
-
- Changes -ZA so it no longer produces [P] tracing messages for path
- construction. (gxpath.c)
-
- Adds a gx_pattern_cache_winnow procedure for selectively removing entries
- from the Pattern cache, similar to gx_purge_selected_cached_chars.
- (gscolor2.h, gxpcolor.h, gxpcmap.c)
-
- Adds the Pattern UID to Pattern cache entries. (gxpcolor.h, gxpcmap.c)
- ****** MUST HANDLE XUID POINTERS ON GC (RELOC) & RESTORE (CLEAR LIKE HT
- CACHE) ******
-
- Makes gs_gstate free the path representation of the clipping path if it's a
- rectangle, since reconstructing it is cheap and otherwise the path segments
- would not be freeable until a restore or GC. (gsstate.c)
-
- Extends the "client data" interface for gstates so that the copy procedure
- can determine why it is being called. (gxstate.h, gsstate.c)
-
- Version 4.35(limited) (11/24/96)
- =====================
-
- This contains the usual bug fixes, and two minor enhancements: an option for
- handling EPSF files with binary headers, and support for file-based
- resources.
-
- Documentation
- -------------
-
- Documents the new EPSF-reading capability. (gs.mak)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some obsolete definitions were accidentally left in the rules for
- compiling fonts into the executable. (int.mak)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - initgraphics left the current color space in an inconsistent
- state. (bug introduced in 4.32) (zgstate.c)
- - restore didn't properly rebind FontDirectory to either Local or
- SharedFontDirectory according to the current VM selection. (gs_dps1.ps)
- - If FontDirectory was redefined, many things broke. (gs_ccfnt.ps,
- gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps)
- - If a resource provided a file name but the file couldn't be
- opened, an error occurred. (gs_res.ps)
- - flushfile didn't work with procedure-based streams. (zfileio.c)
-
- Adds a feature (epsf.dev) that allows the interpreter to recognize and
- handle MS-DOS EPSF files with a binary header. (int.mak, gs_epsf.ps,
- gs_init.ps, pdf_main.ps)
-
- Adds (internal) .getuserparam and .getsystemparam operators for getting the
- value of a single user or system parameter. (gs_lev2.ps, zusparam.c)
-
- To support file-based resources, implements the FontResourceDir,
- GenericResourceDir, and GenericResourcePathSep system parameters, and
- ResourceFileName for the built-in resource categories. (gs_init.ps,
- gs_lev2.ps, gs_res.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - The 2-D CCITTFaxDecode filter became confused if a buffer boundary
- fell between a horizontal make-up code and its terminating code, typically
- causing an ioerror. (scfd.c)
-
- Library
- -------
-
- Fixes bugs:
- - Using the null color could confuse the reference counts for color
- spaces, causing memory access errors. (gscolor.c)
- - Images with CombineWithColor = true caused memory access error,
- because a structure element wasn't initialized. (gdevmrop.c)
- - gs_setnullcolor tried to return an error code, even though it was
- declared as returning void. (Why doesn't gcc catch this??) (gscolor.h,
- gscolor.c)
- - gs_setnullcolor was declared inconsistently as taking a const or
- non-const argument. (gscolor.h)
- - Small color tiles in the band list were not read in correctly.
- (gxclread.c)
- - The band list could get confused, causing ioerrors, invalid memory
- accesses, or garbled output, because the algorithms for computing the size
- of bitmaps when writing and when reading had gotten inconsistent. This code
- has been broken and "fixed" at least 4 or 5 times. (gxcldev.h, gxclbits.c,
- gxclread.c)
- - When using banding, characters that extended off the page
- vertically in the -Y direction came out garbled. (gxclimag.c)
- - The bounding box device didn't compute the box correctly for
- trapezoids. (gdevbbox.c)
- - The fastest case of rendering monochrome images could cause
- unaligned data accesses. (bug introduced recently.) (gximage.h,
- gximage1.c)
- - TrueType characters with no contours could cause an invalid memory
- access. (gstype42.c)
- - Composite TrueType characters weren't rendered properly.
- (gstype42.c)
-
- Adds a get_outline procedure to the Type 42 font header, to provide a
- callback for getting the outline data for a glyph. (gxfont42.h, gstype42.c)
-
- Version 4.34(limited) (11/18/96)
- =====================
-
- This release adds a little more support for CID-keyed fonts and for PCL
- emulation, and a bit more of the machinery for passing images through the
- band list.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The RasterOp source device wasn't listed as an internal device in
- drivers.txt. (drivers.txt)
-
- Corrects a statement regarding the pstotext license. (new-user.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Watcom makefile for the library didn't work properly if
- certain variables were overridden from the command line. (watclib.mak)
- - The library code inadvertently depended on an interpreter header
- file. (*.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - Some very picky compilers complained about assigning 0 to a
- variable of an enum type. (gdevpdfx.h, gdevpdf.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Some very picky compilers didn't like a cast from a pointer type
- to an int type. (idebug.c)
- - Some very picky (and non-ANSI-compliant) compilers didn't allow
- assigning an int to a variable of enumerated type. (zfont2.c, zht2.c)
- - The library code inadvertently depended on an interpreter header
- file. (iref.h)
-
- Restructures the font building code slightly to support CID fonts better.
- (gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c)
-
- Adds a .setcurrentfile operator to allow disk-based fonts to keep their file
- open. (gs_cidfn.ps, zcontrol.c)
-
- Streams
- -------
-
- Fixes bugs:
- - Some very picky compilers didn't like the computation (const byte
- *)0 - 1. (stream.c)
- - A cast to ulong was omitted. (smtf.c)
- - Some compilers got confused by typedefs in the zlib header files.
- (szlibd.c, szlibe.c)
-
- Library
- -------
-
- Fixes bugs:
- - A header file didn't select the proper system header on all POSIX
- systems. (malloc_.h)
- - A subclass/superclass type discrepancy upset some compilers.
- (gsline.h, gsline.c, gxpdash.c)
- - Some very picky compilers didn't accept the previous definition of
- the offset_of macro. (stdpre.h)
- - Some very picky (and non-ANSI-compliant) compilers didn't like
- mixing int and enumerated types. (gsropt.h, gzstate.h, gdevmrop.c,
- gdevrrgb.c, gsrop.c, gxclist.c)
- - A cast was missing. (gslib.c)
- - The gs_setxxxtransparent procedures interpreted their argument
- backwards (i.e., as "opaque" rather than "transparent"). (gsrop.c)
- - Intersecting clipping paths didn't reset the logical operation to
- the default, causing a possible crash. (gsrop.h, gsrop.c, gxacpath.c)
- - Pattern accumulation didn't reset the logical operation to the
- default, possibly causing incorrect output. (gspcolor.c)
- - If a Type 1 character ended with a curve and a closepath, a
- microscopic line could result, causing output anomalies. (gstype1.c)
- - Stroking a path with a mix of thin and non-thin lines could cause
- extraneous lines to appear. (gxstroke.c)
- - Zero-width rectangles were painted even when fill adjustment was
- turned off. (gxpaint.c, gxstroke.c)
- - The algorithm for dividing a curve into monotonic pieces could
- produce incorrect results, causing anomalies when filling curved regions
- with zero fill adjustment. (gxpcopy.c)
- - The algorithms for outside clipping were wrong, causing some
- inside regions not to be clipped. (gxcpath.c)
- - The white pixels in halftones weren't treated as unconditionally
- opaque for RasterOp. (gxht.c, gxcht.c)
- - Images with RasterOp didn't work properly. (gdevmrop.c,
- gximage[2345].c, gxpcmap.c)
- - The library code inadvertently depended on an interpreter header
- file. (gxalloc.h, genarch.c)
- - An important optimization for stroking (recognizing portrait,
- landscape, and unscaled CTMs) was commented out. WE DON'T HAVE ANY RECORD
- OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS. (gxstroke.c)
- - Bitmap images with non-zero data_x values were passed through the
- band list incorrectly, possibly causing vertical "streaks" in the output.
- (gxcldev.h, gxclread.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points were returned in the wrong order, possibly
- causing curved edges to turn into straight lines. (gxpcopy.c)
-
- Changes the debugging printout format for paths so the output can be
- processed mechanically more easily. (gxpath.c)
-
- Adds gs_glyphpath, like charpath but taking a glyph rather than a string of
- character codes. (gschar.h, gschar.c)
-
- Adds an internal concept of a "null color", a color that doesn't actually
- mark any pixels. (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c)
-
- Takes the next incremental steps towards passing images through the band
- list:
- - Implements the ability to pass some color mapping information
- (transfer functions, black generation, undercolor removal) through the band
- list. (gxclist.h, gxclimag.c, gxclist.c, gxclread.c)
-
- Version 4.33(limited) (11/6/96)
- =====================
-
- This release fixes yet another obscure bug in the recently rewritten fast
- loops for image rendering. (These loops have caused more problems than any
- other single module of the entire library.) It also adds preliminary
- support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library
- extensions for supporting HP-GL/2.
-
- Documentation
- -------------
-
- Adds considerable new material to the C style document. (c-style.txt)
-
- Changes -cckr to -ansi in the SGI build procedure. (make.txt)
-
- Corrects an error in the description of the .type42execchar operator.
- (gs_typ42.ps)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The 'man' pages were installed in the documentation directory as
- well as in the man directory. (unix-end.mak)
-
- Interpreter
- -----------
-
- Adds support for CID-keyed fonts. There is no CMap support yet, and some
- things are done with hacks. (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h,
- zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c)
-
- Adds operators for accessing the new dash adaptation and dot length
- parameters in the graphics state. (gs_init.ps, zgstate.c)
-
- Library
- -------
-
- Fixes bugs:
- - The fast case of monobit image rendering could overwrite memory.
- (gximage1.c)
- - The new fast implementation of rectfill didn't check for
- fixed-point overflow. (gsdps1.c)
- - Internally, fonts with no name all appeared to have the same name,
- possibly confusing the xfont machinery. (gxccman.c)
- - A cast to remove const was omitted, upsetting some compilers.
- (gximage1.c)
- - The driver's stroke_path routine was not called if the logical
- operation was not the default one. (gxpaint.c)
-
- Adds support for CID-keyed fonts. (gsccode.h, gxfont.h)
-
- Adds a new "dash pattern adaptation" flag in the imager state. When this
- flag is set and a dash pattern is in effect, each line segment will receive
- an integral number of repetitions of the dash pattern (if necessary, rounded
- up). (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c)
-
- Adds a new "dot length" parameter to the imager state. If this parameter is
- non-zero, it gives a length for rendering dots (zero-length lines). See
- language.txt for details. (gsline.h, gxline.h, gsline.c, gsstate.c,
- gxstroke.c)
-
- Extends band lists so they can handle dash pattern adaptation and dot
- length. (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c)
-
- Adds a floating point emulator to allow more realistic profiling of
- configurations without a FPU. (gsfemu.c)
-
- Version 4.32(limited) (11/1/96)
- =====================
-
- This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The documentation said that Ghostscript could not interpret
- encrypted PDF files. (language.txt)
- - A number of Ghostscript's extensions to the PostScript language
- were missing. (language.txt)
-
- Drivers
- -------
-
- Fixes bugs:
- - A compiler complained about initializing an unsigned variable with
- a negative value. (gdevx.c)
- - An off-by-1 allocation error could cause memory overwriting.
- (gdevepsc.c)
-
- Platforms
- ---------
-
- Declares a pointer 'const' that is actually only used for reading.
- (gp_unifs.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - The code for adding nominal UnderlinePosition and
- UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1
- fonts had FontBBox entries. (gs_type1.ps)
-
- Brings CIDFont support closer to reality. It doesn't work yet, though.
- (gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps)
-
- Interpreter
- -----------
-
- Removes a redundant implementation of initgraphics. (gs_init.ps)
-
- Speeds up rectfill a little for the common case (4 numbers on the stack).
- (zdps1.c)
-
- Library
- -------
-
- Fixes bugs:
- - Zero-width, 1-bit-deep, landscape or portrait images could
- overwrite memory ad lib. (gximage1.c)
- - A procedure was declared 'static' inconsistently, upsetting many
- compilers (but not gcc, which, in contradiction to the ANSI standard,
- doesn't check this properly). (gxcpath.c)
- - A local variable was initialized with a value computed from a
- variable that hadn't been set yet, leading to possibly incorrect coloring of
- the first run of pixels in images with 12 bits per sample. (gximage4.c)
- - A compiler complained about initializing an unsigned variable with
- a negative value. (shcgen.c)
- - A rounding problem could produce a vertical stripe of 1 (or on
- very large images possibly more) incorrect pixels at the right edge of a
- 1-bit-deep image. (gxdda.h, gximage1.c)
-
- Speeds up gs_rectfill substantially for the portrait/landscape case with a
- rectangular clipping region. (gsdps1.c)
-
- Adds a parameter so we can include gx_line_params in subclasses. (gzline.h)
-
- Version 4.31(limited) (10/27/96)
- =====================
-
- This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
- necessary....
-
- Documentation
- -------------
-
- Fixes bugs:
- - The comment describing the order of coefficients in a CTM written
- on the band list was wrong. (gxclpath.h)
-
- Procedures
- ----------
-
- Fixes bugs:
- - bug-form.txt wasn't installed by 'make install'. (unix-end.mak)
- - The default flags in ugcclib.mak didn't take the gcc code
- generation bug into account. (ugcclib.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - MetroWerks CodeWarrior predefines true and false, causing
- compilation errors on the Mac. (stdpre.h)
-
- Interpreter
- -----------
-
- Updates code for the change in the ENUM_PTR macros. (iscan.c)
-
- Changes the allocator to keep track of "lost" ref space separately, to allow
- an independent check on its activities. (gxalloc.h, ialloc.c, isave.c)
-
- Changes the garbage collector API slightly to allow implementation of the
- API in applications other than PostScript interpreters. (ivmspace.h,
- ireclaim.c, igc.c)
-
- Interpreter (PDF)
- -----------------
-
- Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - Some (harmless) pointer incompatibilities upset some compilers.
- (szlibd.c, szlibe.c)
-
- Updates code for the change in the ENUM_PTR macros. (stream.c)
-
- Library
- -------
-
- Fixes bugs:
- - A label in the ENUM_PTR procedure generating macros was often not
- referenced, leading to compiler warnings. (gsstruct.h, gxxfont.h,
- gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c,
- gxcpath.c, gximage.c)
- - Using the gstate version of setflat rather than the imager version
- caused compiler warnings (and, in some cases, errors). (gstype1.c)
- - Non-standard ImageMatrix values for banded images didn't work.
- (This wasn't actually used.) (gxclread.c)
- - imagemask with a halftone and portrait orientation colored some
- inappropriate pixels. (bug introduced in 4.30) (gximage2.c)
- - When banding, if a character straddled a band boundary the first
- time it occurred, all occurrences of it were clipped. (bug introduced in
- 4.2x or 4.30) (gxclimag.c)
- - Degenerate clipping rectangles sometimes got turned into
- non-degenerate ones by swapping the min and max coordinates. (gxcpath.c)
- - Resizing an object either allocated a new object unnecessarily
- (performance bug only), or in very rare cases could corrupt memory.
- (gsalloc.c)
- - Very small objects didn't get put on a free list when freed.
- (Performance bug only.) (gsalloc.c)
- - Some pointers were incorrectly declared 'const', upsetting some
- compilers. (gxclread.c)
-
- Adds more tracing output for -ZL. (gxclread.c)
-
- Changes the -Za tracing output slightly to aid mechanical analysis of
- allocation traces: allocation events now always include a '+', deallocation
- events always include a '-', and the address is always the address of the
- object data and not the header. (gsalloc.c, gsmemory.c)
-
- Changes the allocator to keep track of "lost" object and string space
- separately, to allow an independent check on its activities. (gxalloc.h,
- gsalloc.c)
-
- Changes the allocator to use 'memmove' in an obvious place. (gsalloc.c)
-
- Provides a garbage collector API at the library level to allow
- implementation of the API in applications other than PostScript
- interpreters. (gsgc.h)
-
- Version 4.30(limited) (10/23/96)
- =====================
-
- The main purpose of this release is to implement a substantial change in the
- "high level" image API, after which we believe this API will be stable.
-
- Documentation
- -------------
-
- Documents the changes in the begin_image and image_data device procedures.
- (drivers.txt)
-
- Drivers
- -------
-
- Speeds up the PDF writer a little by reducing the amount of allocation,
- which was causing very frequent garbage collections. (gs_pdfwr.ps,
- gdevpdft.c)
-
- Updates the PDF writer for the change in begin_image/image_data.
- (gdevpdfi.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - Some versions of the SGI IRIX compiler have a bug that causes them
- to try to expand macros that require arguments even when the macro name
- isn't followed by a left parenthesis. (gdevsgi.h, gdevsgi.c)
- - The IBM RS6000 compilers now provide <stdlib.h>, so our
- definitions of malloc and free caused a conflict. (malloc_.h)
-
- Fonts
- -----
-
- Fixes bugs:
- - Many Fontmaps included obsolete references to an old
- Helvetica-Narrow font. (Fontmap.*)
-
- Makes the GS_FONTPATH directory scanner a little more liberal about what
- files it examines: it will now examine any file whose first line begins with
- %!PS-Adobe or %!FontType. (gs_fonts.ps)
-
- To match an apparent Adobe convention, augments findfont so that if a font
- isn't in the Fontmap, it will try to load a file whose name is the same as
- the font name. (gs_fonts.ps)
-
- To make some questionable Apple font inquiry code work, augments the
- FAKEFONTS facility so that it sets the FontType of fake fonts to 1.
- (gs_fonts.ps)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - .checkpassword, .putdeviceparams, .putdevparams, setsystemparams,
- and setuserparams didn't free the results byte array, causing a memory leak
- (until the next garbage collection). (zdevice.c, ziodev.c, zusparam.c)
-
- Library
- -------
-
- Fixes bugs:
- - The code for emulating floating point multiplication with
- conversion to fixed point didn't detect overflow correctly, which could
- produce incorrect results instead of a limitcheck. (gsmisc.c)
- - A macro cast a pointer incorrectly, leading to spurious compiler
- warnings. (gxfixed.h)
- - The code for emulating fixed-to-float conversion computed the
- exponent incorrectly. (gsmisc.c)
- - The algorithm for advancing a DDA a given number of steps (not
- actually used anywhere before this version) was wrong. (gxdda.h)
- - The clipping box returned by clipping devices was incorrect,
- causing parts of the page to disappear. (bug introduced in 4.20)
- (gxcpath.c)
-
- Changes the begin_image and image_data device procedures:
- - begin_image now takes an optional subrectangle instead of a set of
- shape flags.
- - image_data now always takes complete rows of pixels, takes a
- source X offset, and returns 1 when it has received all the data.
-
- The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE
- IN A PUBLIC INTERFACE; however, this interface was still designated "subject
- to change", per the notes for release 3.67 and the documentation in
- drivers.txt. (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h,
- gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c,
- gximage?.c)
-
- Version 4.21(limited) (10/17/96)
- =====================
-
- The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The Ghostscript man page had a .TH in the middle. (gs.1)
-
- Procedures
- ----------
-
- Fixes bugs:
- - The shared version of zlib was always called libgz; on most
- systems, it is now called libz (but not on Red Hat Linux, where libz is a
- library for dealing with time zones). (*.mak, gs.mak, libpng.mak, zlib.mak)
- - The pdf2dsc.1 man page wasn't installed on Unix systems.
- (unix-end.mak)
- - font2c generated procedures named gsf_xxx, but genconf assumed
- they were named gs_f_xxx. (int.mak)
-
- Drivers
- -------
-
- Updates the user-contributed LBP-8II driver to correct unspecified problems.
- (gdevlbp8.c)
-
- Adds a user-contributed driver for Avance Logic SuperVGA cards.
- (gdevsvga.c, devs.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - On Windows NT, a 32-bit parameter was truncated to 16 bits,
- preventing drawing of scroll bars of the image window when the window is
- uncovered. (dwimg.cpp)
-
- Fonts
- -----
-
- Fixes bugs:
- - The free URW Grotesk and Antiqua fonts were omitted from the
- distribution.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Defining a new global instance of a built-in resource
- (ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an
- invalidaccess error. (gs_res.ps)
- - pathbbox with no current path left an extra item on the stack when
- the error occurred. (gs_init.ps)
- - findresource for an undefined resource instance didn't preserve
- the contents of the stack. (gs_res.ps)
-
- Adds a new file providing a procedural interface with a very rudimentary
- form of job encapsulation. (gserver.c)
-
- Changes the initial value of MaxOpStack to 20000, for the sake of a few
- badly-behaved files. (gs_init.ps, pdf_base.ps)
-
- Library
- -------
-
- Fixes bugs:
- - If the image operators failed to allocated their bookkeeping
- structure, the result was a crash rather than VMerror. (gximage.c)
- - gx_default_fill_triangle (currently used only to implement the
- fastest case of stroke) had a typo that could cause a numeric exception or
- incorrect output, and another typo that could produce incorrect output.
- (gdevddrw.c)
- - When banding, if the first occurrence of a character fell partly
- off the page, all occurrences of that character on the page could be clipped
- or mangled. (gxclbits.c, gxclimag.c)
- - When testing whether it's worthwhile compressing a bitmap for
- banding, the compressor was allowed to generate a lot more output than
- needed to make the test. (gxclbits.c)
- - Certain cases of unrotated gray-scale images dropped the first or
- last pixel of each scan line. (gximage2.c)
- - In rare cases, a run of pixels in a image could get erroneously
- displayed in the same color as the previous run, because of a cache
- bookkeeping bug. (gximage3.c)
- - The sample driver for the library had gotten inconsistent with a
- header file. (gslib.c)
- - A declaration was followed by an extraneous semicolon, which upset
- some compilers. (gxht.h)
- - Missing parentheses caused a test for thin lines to be incorrect.
- (gxstroke.c)
-
- Version 4.20(limited) (10/13/96)
- =====================
-
- This release has internal changes for future support of banded image
- processing, but no externally visible changes. Its primary purpose is to
- incorporate speedups for clipped images. It does *not* incorporate fixes
- for all problems reported in 4.0x or 4.10.
-
- Documentation
- -------------
-
- Documents the new get_clipping_box device procedure. (drivers.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - There were many, many minor inconsistencies between the makefiles
- and the source code. (We finally have an automated tool to detect these.)
- (devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c)
- - Some makefile rules weren't properly terminated by a blank line.
- (lib.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - The comments in gslp.ps had gotten out of date. (gslp.ps)
-
- Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow
- packing files in multi-column printouts. (gslp.ps)
-
- Drivers
- -------
-
- Adds a user-contributed driver for the Epson LP-8000 laser printer.
- (gdevlp8k.c)
-
- Adds a DisplayMode parameter to the vgalib device. (gdevvglb.c)
-
- Removes the requirement of typing a character at the end of each page using
- the vgalib driver. THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE.
- (gdevvglb.c)
-
- Interpreter
- -----------
-
- Updates code to accommodate the new get_clipping_box device procedure.
- (zupath.c)
-
- Library
- -------
-
- Fixes bugs:
- - When a CTM was passed through the band list, it didn't get
- translated to match the band coordinate system. (This had no effect,
- because the translation part of the CTM was never used.) (gxclread.c)
-
- Adds a ',' debugging switch to disable high-level operations when banding.
- (gxclpath.c)
-
- Adds an optional get_clipping_box device procedure, so that filling and
- stroking can clip more aggressively. (gdevmem.h, gdevprn.h, gxdevice.h,
- gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c,
- gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c,
- gxstroke.c)
-
- Speeds up clipped filling and stroking, by checking against the device
- clipping box. (gxfill.c, gxstroke.c)
-
- Adds the ability to clip with a rectangle a clipping path being accumulated,
- and uses it to do more aggressive clipping when banding. (gzacpath.h,
- gxacpath.c, gxclread.c)
-
- Speeds up clipping of objects lying partly above or below the clipping
- region. (gxcpath.c)
-
- Speeds up clipping vertically-oriented objects (such as 90 degree rotated
- images or vertical rectangles) with convex clipping regions, by checking for
- vertical rectangles contained in multiple clipping rectangles. (gxcpath.c)
-
- Speeds up the handling of 90 degree rotated gray-scale images. (gximage2.c)
-
- Enhances the band list so that it can contain commands for a range of bands,
- not just a single band or all bands. (gxcldev.h, gxclist.h, gxclbits.c,
- gxclist.c, gxclread.c)
-
- Adds an operation to the DDA structure, for eventual support of clipped
- images. (gxdda.h)
-
- Factors out some macros useful for generating bit-transformation tables.
- (gsbittab.h, gsbittab.c, gsflip.c)
-
- Version 4.10(limited) (9/25/96)
- =====================
-
- This release adds local garbage collection, and a number of performance
- improvements for garbage collection in general. We will support it for one
- or two OEMs, but it is not a public release.
-
- Documentation
- -------------
-
- Moves documentation for all releases before 4.0 to history3.txt. (NEWS,
- history3.txt)
-
- Utilities
- ---------
-
- Fixes bugs:
- - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps)
-
- Drivers
- -------
-
- Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level
- 1) images. (devs.mak, *.mak, gdevpsim.c)
-
- Changes the psmono driver to allow runs of up to 255 repeated bytes.
- (gdevpsim.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - setdevice erased the page even if this wasn't necessary.
- (zdevice.c)
-
- Speeds up the garbage collector, primarily by speeding up pointer
- relocation. (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c)
-
- Actually implements local garbage collection. (igc.h, ivmspace.h, igc.c,
- igcref.c, igcstr.c, ireclaim.c)
-
- Adds some additional error checking for the -Z? switch. (ilocate.c)
-
- Moves a utility for color mapping from the interpreter to the library.
- (icolor.h, zcolor.c)
-
- Adds a MinScreenLevels user parameter. (zusparam.c)
-
- Interpreter (PDF)
- -----------------
-
- Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
- PDF 1.2 file. (pdf_draw.ps)
-
- Library
- -------
-
- Fixes bugs:
- - The test for "thin" stroked lines incorrectly claimed some
- non-thin lines were thin. (gxstroke.c)
- - The computations for halftone cells didn't work for non-square
- pixels. (gxdht.h, gsht.c, gsht1.c, gshtscr.c)
-
- Speeds up the garbage collector a little. (gsstruct.h, gxalloc.h,
- gxfcache.h, gsfont.c)
-
- Replaces references to private statically allocated color spaces with
- references to shared dynamically allocated ones, which are guaranteed to be
- fully filled-in. (gscie.c)
-
- Moves a utility for color mapping from the interpreter to the library.
- (gxfmap.h, gxcmap.c)
-
- Makes available an imager analogue of setmatrix. (gscoord.h, gscoord.c)
-
- Adds a parameter to control the minimum number of halftone screen levels.
- If a halftone cell has fewer pixels than this number, it will be replicated
- (similar to what AccurateScreens does) until the replicated screen has
- enough levels. (gxht.h, gshtscr.c)
-
- Version 4.03 (9/23/96)
- ============
-
- This was an emergency re-release of 4.02 to fix the stdin redirection
- problem. It has essentially no other changes.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Solaris 2.x has /usr/ucb/install, not installbsd. (make.txt)
-
- Updates current.txt to mention the ability to share libpng and libgz.
- (current.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - A rule assumed that the makefile was named `makefile'.
- (unixtail.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The stcolor drivers had an off-by-1 error that could cause them to
- write into unallocated memory. (gdevstc.c)
- - The Imagen driver wouldn't compile with gcc. (gdevimgn.c)
-
- Fonts
- -----
-
- Fixes bugs:
- - The Solaris fontmap had gotten out of date. (Fontmap.Sol)
-
- Streams
- -------
-
- Fixes bugs:
- - The test for stdin being non-seekable could leave the file error
- flag set, which caused an infinite loop when trying to read from the file
- later. (sfile.c, sfileno.c)
-
- Version 4.02 (9/19/96)
- ============
-
- This release fixes a few more bugs, and adds the ability to read encrypted
- PDF files and some PDF 1.2 files.
-
- This release was withdrawn after a few days because the stdin redirection
- fix, which was made at the last minute, cause Ghostview to hang.
-
- Documentation
- -------------
-
- Fixes bugs:
- - The list of required support files was incorrect. (install.txt)
- - The descriptions of file name lookup weren't accurate. (use.txt)
- - A J should have been an H. (gxbitmap.h)
-
- Updates the documentation about encrypted PDF files. (new-user.txt)
-
- Documents what the 13 base PDF fonts are. (ps2pdf.txt)
-
- Fixes a tiny typo. (c-style.txt)
-
- Adds a user-contributed man page for the new pdf2dsc script. (pdf2dsc.1)
-
- Updates the government restricted rights notice in the Aladdin Ghostscript
- Free Public License. (PUBLIC)
-
- Adds the URL of test files to the bug report form. (new-user.txt)
-
- Puts the bug reporting form in a separate file. (readme, bug-form.txt,
- new-user.txt)
-
- Notes that map_xxx_color procedures should not return gx_no_color_index.
- (drivers.txt)
-
- Notes that Ghostscript supports the Flate filters. (language.txt)
-
- Documents the use of the system libpng and zlib. (make.txt, gs.mak)
-
- Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly.
- (make.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Using both DELAYBIND and SAFER caused problems. (pstotext uses
- DELAYBIND.) (gs_init.ps)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Some pdf2ps machinery interfered with the PDF interpreter.
- (pdf_2ps.ps, pdf_main.ps)
- - In the output of pdf2ps, page numbers in link destinations were
- too high by 1. (pdf_main.ps)
- - viewpbm didn't handle value ranges other than [0..255] correctly.
- (viewpbm.ps)
-
- Adds a user-contributed shell script to invoke pdf2dsc.ps. (pdf2dsc,
- unix-end.mak)
-
- Adds a switch to the genconf utility to set the prefix for generated
- procedure names. (genconf.c)
-
- Adds the option of using system libraries (possibly shared) for libpng
- and/or zlib. (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak;
- libpng.mak, zlib.mak)
-
- Drivers
- -------
-
- Fixes bugs:
- - The X11 display devices ignored the -DA4 compile-time option.
- (gdevx.c)
- - The garbage collector could scramble the state of the CGM drivers.
- (gxdevice.h, gdevcgm.c)
- - An identifier of more than 31 characters upset the VAX DEC C
- compiler. (gdevcgml.h, gdevcgml.c)
- - In case of an error in trying to set the CoreDistVersion distiller
- parameter, a variable could be used without initialization. (gdevpdfp.c)
- - When DEBUG is selected, the X Windows driver referenced _Xdebug,
- which is not defined in (at least the VMS version of) DECWindows. (x_.h,
- gdevxini.c)
- - Some map_cmyk_color implementations could return "transparent".
- (gdevbit.c)
- - Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers
- caused an error. (gdevpbm.c)
- - If a user cancelled printing under MS Windows, a confusing error
- resulted, and a temporary file wasn't deleted. (gdevwpr2.c)
- - The map_color_rgb procedure for the bit devices produced incorrect
- results. (This probably had no effect in practice.) (gdevbit.c)
- - The os2prn device produced incorrect output. (gdevos2p.c)
- - The OS/2 PM device didn't detect PM applications correctly.
- (gdevpm.c)
- - The MS Windows printer driver didn't automatically detect the
- printer's color capabilities. (gdevwpr2.c)
- - The BJC-610 driver didn't print at 720 dpi. (gdevcdj.c)
- - The static prototypes of many devices didn't include the far_data
- keyword. (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c,
- gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c,
- gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c,
- gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c,
- gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c)
- - The (original) deskjet driver collapsed print lines towards the
- left margin. (gdevdjet.c)
-
- Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum
- pixel value, by setting any of the Gray/Red/Green/BlueValues device
- parameters. (gdevpbm.c)
-
- Adds pkm[raw] drivers, which do all their internal computations in CMYK and
- convert the data to RGB as they write the file. (gdevpbm.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The VMS script referred to old versions of the third-party
- libraries. (vms.mak)
- - Under VMS with DEC C, attempting to open a new file fails.
- (gp_vms.c)
- - If you tried to print (gp_printfile) under Windows on a system
- with no printers installed, Ghostscript caused a GPF. (gp_mswin.c)
-
- Restores support for a non-DLL MS Windows platform. (bcwin32.mak,
- dwnodll.cpp)
-
- Adds a new MS Windows DLL call, gsdll_get_bitmap. (gsdll16.def,
- gsdll32.def, dll.txt, gdevwdib.c)
-
- Fixes a variety of other small Windows- and OS/2-related problems, mostly
- related to printing. (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp,
- gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps,
- gs_res.ps, gs_type1.ps)
- - setpagedevice (and finddevice) didn't recognize Default.
- (gs_init.ps)
- - When running with -dNODISPLAY, calling gssetresolution would cause
- a crash. (gs_init.ps)
- - A particular combination of save, .forgetsave, and garbage
- collection could cause a memory access error in restore. (isave.c)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps,
- gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps)
- - The insideness testing operators caused an invalid memory access.
- (drivers.txt, zupath.c)
- - If a readline reached an input buffer boundary between the \r and
- \n of a 2-character EOL, an error could occur. (zfileio.c)
- - setdevparams caused an error. (gs_lev2.ps)
-
- Changes file names beginning with ./ or ../ so they are recognized as
- "absolute" and not subject to the search path. (gp_dosfs.c, gp_ntfs.c,
- gp_os2.c, gp_unifn.c)
-
- Changes the exit code for -h or --help from 0 to 1, so an invoking program
- will keep the output around for the user to look at. (imainarg.c)
-
- Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to
- the LZW filters. These additions are required for PDF 1.2 and will be part
- of PostScript Level 3. (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c,
- zfpngp.c [deleted])
-
- Interpreter (PDF)
- -----------------
-
- Fixes bugs:
- - The copyright notices on some files didn't mention the Aladdin
- free license. (pdf_*.ps)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (pdf_font.ps)
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (pdf_main.ps)
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. (pdf_main.ps)
- - The Rotate key rotated pages in the wrong direction.
- (pdf_main.ps)
-
- Adds a minimal "security socket" to the interpreter. This does not include
- any actual decryption code; such code is available elsewhere (see
- new-user.txt). (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps)
-
- Adds a PDF 1.2 capability:
- - The destination in a Dest array can be a page number as well as a
- page object. (pdf_main.ps)
-
- Streams
- -------
-
- Fixes bugs:
- - stdin was assumed to be non-seekable. (sfile.c, sfileno.c)
-
- Library
- -------
-
- Fixes bugs:
- - Garbage collection could corrupt a pointer in Type 0 fonts.
- (gxfont0.h, gsfont0.c)
- - When applying hints to a Type 1 font outline, the last point could
- sometimes get moved twice, causing output anomalies. (gxhint3.c)
- - An #include needed for debugging was missing. (gxcmap.h)
- - Graphics states included a no-longer-used private color space
- object. (gsstate.c)
- - Images could get clipped randomly in the X direction. (I don't
- understand why this problem hasn't shown up more often, since it's been
- there since release 4.00.) (gximage.c)
- - The arct and arcto operators failed to draw the line to the
- starting point of the arc. (bug introduced in 4.01) (gspath1.c)
- - Prefix subclasses of simple structures caused an invalid memory
- access. (gsstruct.h)
- - The variable fheight was sometimes unused. (gstype1.c)
- - igcd and imod didn't have prototypes in an appropriate header
- file, and were declared extern in several places. (gsdcolor.h, gsline.h,
- gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c,
- gxclimag.c)
- - When using a non-identity RenderTable in a CIE rendering
- dictionary, all colors came out too light. (gscie.c)
- - When using anti-aliased graphics, stroked lines were rendered too
- thin. (gspaint.c)
- - The default map_cmyk_color implementations could return
- "transparent". (gxcmap.c)
- - The number of bits of alpha requested when rendering anti-aliased
- characters could exceed 4. (gschar.c)
- - Multi-screen halftones could cause errors or infinite looping when
- banding. (This problem predates 4.0; I don't know why it didn't show up
- before.) (gxcldev.h, gxclist.c, gxclread.c)
- - Skewed or rotated gray-scale images, or masks with a halftoned
- color, omitted one line of pixels and displaced the image by one pixel.
- (gximage2.c)
-
- Adds an implementation of realloc, for systems that don't have one that
- works. I don't know how to determine this automatically, so for the moment,
- the code uses our own implementation on Linux (where realloc is known to be
- broken, at least in some releases) and nowhere else. (malloc_.h,
- gsmemory.c, gsmisc.c)
-
- Removes the "OLD" algorithms from the Type 1 hinting source code, since they
- are no longer executed. (If necessary, they can be retrieved from an older
- version.) (gxhint3.c)
-
- Version 4.01 (7/10/96)
- ============
-
- This fixes a few minor bugs discovered since the 4.0 release.
-
- Documentation
- -------------
-
- Fixes bugs:
- - An installation directory name was wrong. (make.txt,
- unix-lpr.txt)
- - A URL was wrong. (devices.txt)
- - A reference to use.doc hadn't been updated. (gs.1)
- - Some references to /usr/local/lib hadn't been updated. (gs.1)
- - The NEWS file and history* files still referred to *.doc rather
- than *.txt. (NEWS, history*.txt)
-
- Adds a note about compilation on Digital Unix. (make.txt)
-
- Clarifies that calling gs_exit calls gs_finit automatically. (imain.h)
-
- Adds a pointer to the PDF encryption patch. (Ridiculous U.S. export control
- laws don't allow including the patch itself in the main fileset.)
- (new-user.txt)
-
- Adds a help file for VMS. (gs-vms.hlp)
-
- Procedures
- ----------
-
- Fixes bugs:
- - vms.mak had gotten out of sync with the makefiles (again).
- (vms.mak)
- - DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE.
- (gs_init.ps)
- - The Microsoft C makefiles had gotten out of date. (msc.mak)
-
- The (few) GNU-Licensed drivers were accidentally omitted from the fileset.
-
- Modifies a makefile for greater reusability. (watclib.mak)
-
- Adds a 'debug' target for making Unix debugging configurations.
- (unix-end.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Some uses of 'run' should be changed to runlibfile. (bdftops.ps,
- impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps,
- wrfont.ps)
- - Some debugging code hadn't been removed. (gslp.ps)
-
- Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data. (psfiles.txt,
- unix-end.mak, viewcmyk.ps)
-
- Improves pdf2dsc by including Title and CreationDate DSC comments (these are
- displayed by Ghostview) and reducing the size of typical output files by a
- factor of about 3. (pdf2dsc.ps)
-
- Incorporates major changes (claimed to be improvements) to ps2ascii
- contributed by a user. If you have problems with it, please contact him,
- not Aladdin. (ps2ascii.ps)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The X value of a bounding box could be computed incorrectly.
- (gdevbbox.c)
-
- Platforms
- ---------
-
- Fixes bugs:
- - The Windows DLL sometimes didn't clean up properly. (dll.txt,
- dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (zfilter.c)
- - The search path could become garbage under some circumstances.
- (imain.c)
- - A dangling reference to a stack-allocated variable could corrupt
- memory if a client mixed interpreter calls and direct C calls. (interp.c)
- - Printing an object to a procedure-based filter could cause an
- invalid memory access. (zfileio.c)
-
- Library
- -------
-
- Fixes bugs:
- - Setting parameters for an unopened device could cause an access
- error or invoke the wrong put_params procedure. (gsdparam.c)
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (stream.h)
- - If the current device was the nullpage device, doing a [g]save,
- selecting a different device, and doing a [g]restore caused an error.
- (gsdparam.c)
-
- Adds the ability to append arcs without the initial lineto, for PCL
- emulation. (gspath.h, gspath1.c)
-
- Version 4.0 (6/28/96)
- ===========
-
- This is the first public release since 3.53, with a few more last-minute
- patches beyond 3.70.
-
- Documentation
- -------------
-
- Fixes bugs:
- - Many makefiles still referred to .doc files rather than .txt.
- (cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak,
- watcwin.mak, wccommon.mak, zlib.mak)
- - Some FONTPATH-related information was out of date. (use.txt)
- - The installation directory for fonts was incorrect. (install.txt)
- - The libpng and zlib versions were out of date. (libpng.mak,
- zlib.mak)
- - Some information about GSview was incorrect or incomplete.
- (new-user.txt)
- - make.txt said it described installation as well as building.
- (make.txt)
-
- Notes that the current release of zlib won't compile and link correctly with
- Sun cc. (make.txt)
-
- Adds a little more detail to the C style document. (c-style.txt)
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some documentation files weren't installed. (unix-end.mak)
- - Some dependencies were incorrect. (bcwin32.mak)
- - 'make begin' and 'make clean' deleted too many and/or the wrong
- files. (bcwin.mak, bcwin32.mak)
- - libpng.mak didn't work with libpng version 0.89c. (libpng.mak)
- - -d<var>=<name> was equivalent to -d<var>=/<name>, and there was no
- way to set a variable to true, false, or null. (use.txt, gs_init.ps,
- iinit.c, imainarg.c)
-
- Removes the modules.lis file, which is no longer used.
-
- Undoes detecting automatically the need to run tar_cat -- the mechanism
- didn't work, and caused confusion. (unix-end.mak)
-
- Updates the makefiles to libpng version 0.89, but allows them to work with
- either 0.88 or 0.89. (*.mak)
-
- Utilities
- ---------
-
- Fixes bugs:
- - Showing the details of a protected font caused an error.
- (markhint.ps)
-
- Drivers
- -------
-
- Fixes bugs:
- - A copyright notice was wrong. (gs_pdfwr.ps)
- - PDF link annotations could get written with two Dest keys.
- (gdevpdfm.c)
- - MakeProcInstance and FreeProcInstance were called on platforms
- where it wasn't appropriate. (gdevwpr2.c, gdevwprn.c, gp_mswin.c)
- - On X servers that return very large values for the "virtual
- screen" size in millimeters but correct values for the screen size in
- pixels, a rangecheck could occur. (gdevxini.c)
- - The bounding box device could return garbage if stroke or fill was
- ever invoked with an empty path. (gdevbbox.c)
-
- Replaces the LBP8 driver with a revised one contributed by a user.
- (gdevlbp8.c, devs.mak)
-
- Platforms
- ---------
-
- Fixes bugs:
- - Some Windows menu parameters were incorrect. (gsdll16.rc,
- gsdll32.rc)
-
- Interpreter
- -----------
-
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (ziodev2.c)
- - File names weren't parsed or concatenated properly on all
- platforms. (gs_fonts.ps, zfile.c)
- - Filter lookahead caused problems with special files. (zfproc.c)
- - If a TransformPQR procedure in a CIE color rendering dictionary
- didn't pop its 4 array arguments, an error occurred. (gs_lev2.ps, zcrd.c)
-
- Streams
- -------
-
- Fixes bugs:
- - Filter lookahead caused problems with special files. (bug
- introduced in 3.70) (stream.h)
-
- Library
- -------
-
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (gxiodev.h, gsiodev.c)
-
- Versions before 4.0
- ===================
-
- See the files history3.txt, history2.txt, and history1.txt.
-